@progress/kendo-angular-treelist 12.2.0-develop.7 → 13.0.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/binding-directives/base-binding.directive.d.ts +5 -1
  2. package/binding-directives/data-bound-tree-component.d.ts +9 -0
  3. package/binding-directives/flat-binding.directive.d.ts +14 -3
  4. package/binding-directives/hierarchy-binding.directive.d.ts +12 -3
  5. package/column-menu/column-chooser.component.d.ts +10 -6
  6. package/column-menu/column-menu-chooser.component.d.ts +6 -10
  7. package/column-menu/column-menu-filter.component.d.ts +6 -10
  8. package/column-menu/column-menu-item-content-template.directive.d.ts +1 -1
  9. package/column-menu/column-menu-item.component.d.ts +8 -6
  10. package/column-menu/column-menu-lock.component.d.ts +5 -11
  11. package/column-menu/column-menu-settings.interface.d.ts +7 -10
  12. package/column-menu/column-menu-sort.component.d.ts +5 -11
  13. package/column-menu/column-menu.component.d.ts +1 -1
  14. package/column-menu/column-menu.service.d.ts +1 -1
  15. package/column-resizing/column-resize.interface.d.ts +1 -1
  16. package/columns/checkbox-column.component.d.ts +1 -1
  17. package/columns/column-base.d.ts +4 -0
  18. package/columns/column-group.component.d.ts +9 -6
  19. package/columns/column.component.d.ts +16 -66
  20. package/columns/command-column.component.d.ts +13 -15
  21. package/columns/rowreorder-column.component.d.ts +19 -0
  22. package/columns/span-column.component.d.ts +10 -81
  23. package/data/change-event-args.interface.d.ts +2 -2
  24. package/data/data.collection.d.ts +6 -0
  25. package/dragdrop/column-reorder-config.d.ts +1 -1
  26. package/editing/add-command.directive.d.ts +1 -1
  27. package/editing/cancel-command.directive.d.ts +1 -1
  28. package/editing/edit-command.directive.d.ts +1 -1
  29. package/editing/edit-event-args.interface.d.ts +1 -1
  30. package/editing/edit-template.directive.d.ts +11 -0
  31. package/editing/remove-command.directive.d.ts +1 -1
  32. package/editing/remove-event-args.interface.d.ts +1 -1
  33. package/editing/save-command.directive.d.ts +1 -1
  34. package/editing/save-event-args.interface.d.ts +1 -1
  35. package/esm2020/binding-directives/base-binding.directive.mjs +9 -3
  36. package/esm2020/binding-directives/flat-binding.directive.mjs +56 -6
  37. package/esm2020/binding-directives/hierarchy-binding.directive.mjs +46 -6
  38. package/esm2020/column-menu/column-chooser.component.mjs +10 -6
  39. package/esm2020/column-menu/column-menu-chooser.component.mjs +8 -12
  40. package/esm2020/column-menu/column-menu-filter.component.mjs +6 -10
  41. package/esm2020/column-menu/column-menu-item-content-template.directive.mjs +1 -1
  42. package/esm2020/column-menu/column-menu-item.component.mjs +9 -7
  43. package/esm2020/column-menu/column-menu-lock.component.mjs +5 -11
  44. package/esm2020/column-menu/column-menu-sort.component.mjs +5 -11
  45. package/esm2020/column-menu/column-menu.component.mjs +2 -2
  46. package/esm2020/column-menu/column-menu.service.mjs +1 -1
  47. package/esm2020/columns/checkbox-column.component.mjs +1 -1
  48. package/esm2020/columns/column-base.mjs +4 -0
  49. package/esm2020/columns/column-group.component.mjs +9 -6
  50. package/esm2020/columns/column.component.mjs +16 -39
  51. package/esm2020/columns/command-column.component.mjs +13 -15
  52. package/esm2020/columns/rowreorder-column.component.mjs +47 -0
  53. package/esm2020/columns/span-column.component.mjs +10 -81
  54. package/esm2020/data/data.collection.mjs +41 -28
  55. package/esm2020/editing/add-command.directive.mjs +2 -2
  56. package/esm2020/editing/base-command.directive.mjs +1 -1
  57. package/esm2020/editing/cancel-command.directive.mjs +2 -2
  58. package/esm2020/editing/edit-command.directive.mjs +2 -2
  59. package/esm2020/editing/edit-template.directive.mjs +11 -0
  60. package/esm2020/editing/remove-command.directive.mjs +2 -2
  61. package/esm2020/editing/save-command.directive.mjs +2 -2
  62. package/esm2020/excel/excel-command.directive.mjs +2 -2
  63. package/esm2020/filtering/cell/boolean-filter-cell.component.mjs +11 -11
  64. package/esm2020/filtering/cell/date-filter-cell.component.mjs +11 -11
  65. package/esm2020/filtering/cell/filter-cell-operators.component.mjs +15 -0
  66. package/esm2020/filtering/cell/numeric-filter-cell.component.mjs +13 -12
  67. package/esm2020/filtering/cell/string-filter-cell.component.mjs +14 -13
  68. package/esm2020/filtering/date-filter.component.mjs +6 -1
  69. package/esm2020/filtering/menu/boolean-filter-menu.component.mjs +11 -12
  70. package/esm2020/filtering/menu/date-filter-menu.component.mjs +12 -12
  71. package/esm2020/filtering/menu/filter-menu.component.mjs +1 -1
  72. package/esm2020/filtering/menu/numeric-filter-menu.component.mjs +12 -12
  73. package/esm2020/filtering/menu/string-filter-menu.component.mjs +15 -0
  74. package/esm2020/filtering/numeric-filter.component.mjs +4 -1
  75. package/esm2020/filtering/operators/after-eq-filter-operator.component.mjs +2 -5
  76. package/esm2020/filtering/operators/after-filter-operator.component.mjs +2 -5
  77. package/esm2020/filtering/operators/before-eq-filter-operator.component.mjs +2 -5
  78. package/esm2020/filtering/operators/before-filter-operator.component.mjs +3 -6
  79. package/esm2020/filtering/operators/contains-filter-operator.component.mjs +1 -4
  80. package/esm2020/filtering/operators/ends-with-filter-operator.component.mjs +1 -4
  81. package/esm2020/filtering/operators/eq-filter-operator.component.mjs +1 -4
  82. package/esm2020/filtering/operators/gt-filter-operator.component.mjs +1 -4
  83. package/esm2020/filtering/operators/gte-filter-operator.component.mjs +1 -4
  84. package/esm2020/filtering/operators/is-empty-filter-operator.component.mjs +1 -4
  85. package/esm2020/filtering/operators/is-not-empty-filter-operator.component.mjs +1 -4
  86. package/esm2020/filtering/operators/is-not-null-filter-operator.component.mjs +1 -4
  87. package/esm2020/filtering/operators/isnull-filter-operator.component.mjs +1 -4
  88. package/esm2020/filtering/operators/lt-filter-operator.component.mjs +2 -5
  89. package/esm2020/filtering/operators/lte-filter-operator.component.mjs +1 -4
  90. package/esm2020/filtering/operators/neq-filter-operator.component.mjs +1 -4
  91. package/esm2020/filtering/operators/not-contains-filter-operator.component.mjs +1 -4
  92. package/esm2020/filtering/operators/starts-with-filter-operator.component.mjs +1 -4
  93. package/esm2020/filtering/string-filter.component.mjs +2 -1
  94. package/esm2020/index.mjs +2 -0
  95. package/esm2020/localization/custom-messages.component.mjs +1 -1
  96. package/esm2020/localization/messages.mjs +3 -1
  97. package/esm2020/package-metadata.mjs +2 -2
  98. package/esm2020/pager/pager-element.component.mjs +17 -0
  99. package/esm2020/pager/pager-next-buttons.component.mjs +8 -11
  100. package/esm2020/pager/pager-numeric-buttons.component.mjs +1 -1
  101. package/esm2020/pager/pager-page-sizes.component.mjs +1 -1
  102. package/esm2020/pager/pager-prev-buttons.component.mjs +8 -11
  103. package/esm2020/pager/pager-template.directive.mjs +1 -1
  104. package/esm2020/pdf/pdf-command.directive.mjs +2 -2
  105. package/esm2020/pdf/pdf-margin.component.mjs +9 -0
  106. package/esm2020/rendering/cell-template.directive.mjs +1 -1
  107. package/esm2020/rendering/cell.component.mjs +68 -20
  108. package/esm2020/rendering/common/spacer.component.mjs +1 -1
  109. package/esm2020/rendering/constants.mjs +4 -0
  110. package/esm2020/rendering/header/header.component.mjs +1 -1
  111. package/esm2020/rendering/table-body.component.mjs +5 -3
  112. package/esm2020/row-reordering/flat-reorder.service.mjs +48 -0
  113. package/esm2020/row-reordering/hierarchical-reorder.service.mjs +55 -0
  114. package/esm2020/row-reordering/row-reorder.service.mjs +220 -0
  115. package/esm2020/row-reordering/types.mjs +5 -0
  116. package/esm2020/row-reordering/utils.mjs +129 -0
  117. package/esm2020/shared.module.mjs +8 -3
  118. package/esm2020/treelist.component.mjs +185 -311
  119. package/esm2020/treelist.module.mjs +71 -66
  120. package/excel/excel-command.directive.d.ts +1 -1
  121. package/excel/excel-export-data.interface.d.ts +1 -1
  122. package/excel/excel.component.d.ts +9 -8
  123. package/fesm2015/progress-kendo-angular-treelist.mjs +1215 -792
  124. package/fesm2020/progress-kendo-angular-treelist.mjs +1205 -791
  125. package/filtering/cell/boolean-filter-cell.component.d.ts +11 -11
  126. package/filtering/cell/date-filter-cell.component.d.ts +11 -11
  127. package/filtering/cell/filter-cell-operators.component.d.ts +15 -0
  128. package/filtering/cell/numeric-filter-cell.component.d.ts +13 -12
  129. package/filtering/cell/string-filter-cell.component.d.ts +12 -11
  130. package/filtering/date-filter.component.d.ts +7 -11
  131. package/filtering/menu/boolean-filter-menu.component.d.ts +11 -12
  132. package/filtering/menu/date-filter-menu.component.d.ts +12 -12
  133. package/filtering/menu/numeric-filter-menu.component.d.ts +12 -12
  134. package/filtering/menu/string-filter-menu.component.d.ts +15 -0
  135. package/filtering/numeric-filter.component.d.ts +4 -1
  136. package/filtering/operators/after-eq-filter-operator.component.d.ts +4 -0
  137. package/filtering/operators/after-filter-operator.component.d.ts +4 -0
  138. package/filtering/operators/before-eq-filter-operator.component.d.ts +4 -0
  139. package/filtering/operators/before-filter-operator.component.d.ts +4 -0
  140. package/filtering/operators/contains-filter-operator.component.d.ts +1 -4
  141. package/filtering/operators/ends-with-filter-operator.component.d.ts +1 -4
  142. package/filtering/operators/eq-filter-operator.component.d.ts +1 -4
  143. package/filtering/operators/gte-filter-operator.component.d.ts +1 -4
  144. package/filtering/operators/is-empty-filter-operator.component.d.ts +1 -4
  145. package/filtering/operators/is-not-empty-filter-operator.component.d.ts +1 -4
  146. package/filtering/operators/is-not-null-filter-operator.component.d.ts +1 -4
  147. package/filtering/operators/isnull-filter-operator.component.d.ts +1 -4
  148. package/filtering/operators/lt-filter-operator.component.d.ts +4 -0
  149. package/filtering/operators/neq-filter-operator.component.d.ts +1 -4
  150. package/filtering/operators/not-contains-filter-operator.component.d.ts +1 -4
  151. package/filtering/operators/starts-with-filter-operator.component.d.ts +1 -4
  152. package/filtering/string-filter.component.d.ts +2 -1
  153. package/index.d.ts +2 -0
  154. package/localization/custom-messages.component.d.ts +1 -1
  155. package/localization/messages.d.ts +6 -2
  156. package/navigation/navigation-cell.interface.d.ts +1 -4
  157. package/navigation/navigation-row.interface.d.ts +1 -4
  158. package/package.json +16 -15
  159. package/pager/pager-element.component.d.ts +9 -0
  160. package/pager/pager-next-buttons.component.d.ts +0 -3
  161. package/pager/pager-numeric-buttons.component.d.ts +1 -1
  162. package/pager/pager-prev-buttons.component.d.ts +0 -3
  163. package/pager/pager-settings.d.ts +1 -15
  164. package/pager/pager-template.directive.d.ts +1 -1
  165. package/pdf/pdf-command.directive.d.ts +1 -1
  166. package/pdf/pdf-margin.component.d.ts +9 -0
  167. package/rendering/cell-template.directive.d.ts +1 -1
  168. package/rendering/cell.component.d.ts +9 -1
  169. package/rendering/common/spacer.component.d.ts +1 -1
  170. package/rendering/constants.d.ts +4 -0
  171. package/row-reordering/flat-reorder.service.d.ts +16 -0
  172. package/row-reordering/hierarchical-reorder.service.d.ts +16 -0
  173. package/row-reordering/row-reorder.service.d.ts +61 -0
  174. package/row-reordering/types.d.ts +39 -0
  175. package/row-reordering/utils.d.ts +85 -0
  176. package/schematics/ngAdd/index.js +3 -3
  177. package/scrolling/content-scroll-event.d.ts +1 -1
  178. package/scrolling/scroll-bottom-event.d.ts +1 -1
  179. package/scrolling/scroll-request.service.d.ts +6 -0
  180. package/selection/selectable-settings.d.ts +5 -15
  181. package/selection/selectable.directive.d.ts +1 -1
  182. package/selection/selection-change-event.d.ts +1 -1
  183. package/shared.module.d.ts +5 -4
  184. package/treelist.component.d.ts +66 -289
  185. package/treelist.module.d.ts +68 -66
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Directive, Optional, EventEmitter, Injectable, QueryList, Input, ContentChildren, ContentChild, InjectionToken, forwardRef, Component, SkipSelf, Host, isDevMode, SecurityContext, Inject, HostBinding, Output, Self, ViewChild, HostListener, ViewChildren, Pipe, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { Directive, Optional, EventEmitter, Injectable, QueryList, Input, ContentChildren, ContentChild, InjectionToken, forwardRef, Component, SkipSelf, Host, isDevMode, SecurityContext, Inject, Output, HostBinding, Self, ViewChild, HostListener, ViewChildren, Pipe, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i4 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
9
  import * as i3$2 from '@angular/forms';
@@ -12,7 +12,7 @@ import { merge, of, fromEvent, isObservable, BehaviorSubject, Subscription, Subj
12
12
  import { auditTime, take, switchMap, map, distinctUntilChanged, filter, tap, throttleTime, takeUntil, switchMapTo, debounceTime, delay, bufferCount } from 'rxjs/operators';
13
13
  import { validatePackage } from '@progress/kendo-licensing';
14
14
  import * as i1$3 from '@progress/kendo-angular-common';
15
- import { isDocumentAvailable, Keys, anyChanged, isChanged as isChanged$1, guid, ResizeSensorComponent, hasObservers, DraggableModule, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
15
+ import { isDocumentAvailable, Keys, isPresent as isPresent$1, anyChanged, isChanged as isChanged$1, guid, ResizeSensorComponent, hasObservers, DraggableModule, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
16
16
  import { orderBy, isCompositeFilterDescriptor, process, aggregateBy } from '@progress/kendo-data-query';
17
17
  import * as i1$1 from '@progress/kendo-angular-l10n';
18
18
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
@@ -21,19 +21,21 @@ import { PopupModule } from '@progress/kendo-angular-popup';
21
21
  import * as i1$2 from '@angular/platform-browser';
22
22
  import * as i3 from '@progress/kendo-angular-icons';
23
23
  import { IconsModule } from '@progress/kendo-angular-icons';
24
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, filterIcon, sortAscSmallIcon, sortDescSmallIcon, columnsIcon, moreVerticalIcon, filterClearIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltToRightIcon } from '@progress/kendo-svg-icons';
24
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, filterIcon, sortAscSmallIcon, sortDescSmallIcon, columnsIcon, moreVerticalIcon, filterClearIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, reorderIcon, caretAltToLeftIcon, caretAltToRightIcon } from '@progress/kendo-svg-icons';
25
25
  import { getter, setter } from '@progress/kendo-common';
26
+ import * as i32 from '@progress/kendo-angular-utils';
27
+ import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
26
28
  import * as i3$1 from '@progress/kendo-angular-dropdowns';
27
29
  import { DropDownListModule, AutoCompleteModule, DropDownsModule } from '@progress/kendo-angular-dropdowns';
28
- import * as i4$1 from '@progress/kendo-angular-inputs';
30
+ import * as i2 from '@progress/kendo-angular-inputs';
29
31
  import { NumericTextBoxComponent, InputsModule, NumericTextBoxModule } from '@progress/kendo-angular-inputs';
30
32
  import * as i3$3 from '@progress/kendo-angular-dateinputs';
31
33
  import { DatePickerModule } from '@progress/kendo-angular-dateinputs';
32
34
  import { trigger, state, style, transition, animate } from '@angular/animations';
33
- import * as i4$2 from '@progress/kendo-angular-buttons';
35
+ import * as i4$1 from '@progress/kendo-angular-buttons';
34
36
  import { ButtonModule, Button } from '@progress/kendo-angular-buttons';
35
37
  import * as i1$4 from '@progress/kendo-angular-intl';
36
- import * as i4$3 from '@progress/kendo-angular-label';
38
+ import * as i4$2 from '@progress/kendo-angular-label';
37
39
  import { LabelModule } from '@progress/kendo-angular-label';
38
40
  import { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';
39
41
  import { saveAs } from '@progress/kendo-file-saver';
@@ -46,8 +48,8 @@ const packageMetadata = {
46
48
  name: '@progress/kendo-angular-treelist',
47
49
  productName: 'Kendo UI for Angular',
48
50
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
49
- publishDate: 1684780301,
50
- version: '12.2.0-develop.7',
51
+ publishDate: 1685119813,
52
+ version: '13.0.0-develop.10',
51
53
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
52
54
  };
53
55
 
@@ -67,7 +69,7 @@ const packageMetadata = {
67
69
  * - `loading`—Specifies if the item children are currently loading.
68
70
  * - `rowIndex`—The current row index. Use it as an alias for a template variable by utilizing the `let-rowIndex="rowIndex"` syntax.
69
71
  *
70
- * * @example
72
+ * @example
71
73
  * ```html
72
74
  * <kendo-treelist ...>
73
75
  * <kendo-treelist-column field="ProductName">
@@ -106,6 +108,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
106
108
  * - `formGroup`&mdash;The current [`FormGroup`](link:site.data.urls.angular['formgroupapi']). If you use the TreeList inside [Template-Driven Forms](link:site.data.urls.angular['forms']), `formGroup` will be `undefined`.
107
109
  * - `isNew`&mdash;The state of the current item.
108
110
  * - `rowIndex`&mdash;The current row index. If inside a new item row, `rowIndex` is `-1`.
111
+ *
112
+ * * @example
113
+ * ```html
114
+ * <kendo-treelist ...>
115
+ * <kendo-treelist-command-column title="command">
116
+ * <ng-template kendoTreeListEditTemplate let-rowIndex="rowIndex">
117
+ * {{rowIndex}}
118
+ * </ng-template>
119
+ * </kendo-treelist-command-column>
120
+ * </kendo-treelist>
121
+ * ```
109
122
  */
110
123
  class EditTemplateDirective {
111
124
  constructor(templateRef) {
@@ -272,6 +285,10 @@ const isSpanColumn = column => column.isSpanColumn;
272
285
  * @hidden
273
286
  */
274
287
  const isCheckboxColumn = column => column.isCheckboxColumn;
288
+ /**
289
+ * @hidden
290
+ */
291
+ const isRowReorderColumn = column => column.isRowReorderColumn;
275
292
  const isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);
276
293
  /**
277
294
  * The base class for the column components of the TreeList.
@@ -660,14 +677,15 @@ function isColumnComponent(column) {
660
677
  return isPresent(column.field);
661
678
  }
662
679
  /**
663
- * Represents the columns of the [Angular TreeList]({% slug getstarted_treelist %}).
680
+ * Represents the columns of the TreeList.
664
681
  *
665
- * {% meta height:470 %}
666
- * {% embed_file basic-usage/app.component.ts preview %}
667
- * {% embed_file basic-usage/app.module.ts %}
668
- * {% embed_file shared/main.ts %}
669
- * {% embed_file shared/employees.ts %}
670
- * {% endmeta %}
682
+ * @example
683
+ * ```html
684
+ * <kendo-treelist [kendoTreeListFlatBinding]="data" ...>
685
+ * <kendo-treelist-column field="name" title="Name"></kendo-treelist-column>
686
+ * <kendo-treelist-column field="title"title="Title"></kendo-treelist-column>
687
+ * </kendo-treelist>
688
+ * ```
671
689
  */
672
690
  class ColumnComponent extends ColumnBase {
673
691
  constructor(parent, optionChanges) {
@@ -679,51 +697,27 @@ class ColumnComponent extends ColumnBase {
679
697
  this.sortable = true;
680
698
  /**
681
699
  * Defines the editor type ([see example]({% slug editing_reactive_forms_treelist %}#toc-setup)).
682
- * Used when the column enters the edit mode. The default value is `text`.
700
+ * Used when the column enters the edit mode. [See example](slug:editing_reactive_forms_treelist).
683
701
  *
684
- * @example
685
- * ```html-no-run
686
- * <kendo-treelist>
687
- * <kendo-treelist-column field="UnitPrice" editor="numeric">
688
- * </kendo-treelist-column>
689
- * </kendo-treelist>
690
- * ```
702
+ * @default 'text'
691
703
  */
692
704
  this.editor = 'text';
693
705
  /**
694
- * Defines the filter type that is displayed inside the filter row. The default value is `text`.
706
+ * Defines the filter type that is displayed inside the filter row.
695
707
  *
696
- * @example
697
- * ```html-no-run
698
- * <kendo-treelist>
699
- * <kendo-treelist-column field="UnitPrice" filter="numeric">
700
- * </kendo-treelist-column>
701
- * </kendo-treelist>
702
- * ```
708
+ * @default 'text'
703
709
  */
704
710
  this.filter = 'text';
705
711
  /**
706
- * Defines if a filter UI will be displayed for this column. The default value is `true`.
712
+ * Defines if a filter UI will be displayed for this column.
707
713
  *
708
- * @example
709
- * ```html-no-run
710
- * <kendo-treelist>
711
- * <kendo-treelist-column field="UnitPrice" [filterable]="false">
712
- * </kendo-treelist-column>
713
- * </kendo-treelist>
714
- * ```
714
+ * @default true
715
715
  */
716
716
  this.filterable = true;
717
717
  /**
718
- * Defines whether the column is editable. The default value is `true`.
718
+ * Defines whether the column is editable.
719
719
  *
720
- * @example
721
- * ```html-no-run
722
- * <kendo-treelist>
723
- * <kendo-treelist-column field="UnitPrice" [editable]="false">
724
- * </kendo-treelist-column>
725
- * </kendo-treelist>
726
- * ```
720
+ * @default true
727
721
  */
728
722
  this.editable = true;
729
723
  }
@@ -817,25 +811,15 @@ function isSpanColumnComponent(column) {
817
811
  * [sorting]({% slug sorting_treelist %}) and [filtering]({% slug filtering_treelist %}). Wrap the columns that will be
818
812
  * merged inside the `<kendo-treelist-span-column>` tag.
819
813
  *
820
- * {% meta height:570 %}
821
- * {% embed_file configuration/span-column/app.component.ts preview %}
822
- * {% embed_file configuration/span-column/app.module.ts %}
823
- * {% embed_file shared/main.ts %}
824
- * {% embed_file shared/employees.ts %}
825
- * {% endmeta %}
826
- *
827
- * By default, the data cell displays the data for the specified fields. To further customize
828
- * the span-column functionality, use a [cell template]({% slug api_treelist_celltemplatedirective %}).
829
- *
830
- * ```html-no-run
814
+ * ```html
831
815
  * <kendo-treelist-span-column>
832
- * <kendo-treelist-column field="field1" title="Field 1"></kendo-treelist-column>
833
- * <kendo-treelist-column field="field2" title="Field 2"></kendo-treelist-column>
834
- * <ng-template kendoTreeListCellTemplate let-dataItem>
835
- * <h5>{{ dataItem.field1 }}</h5>
836
- * <p>{{ dataItem.field2 }}</p>
837
- * </ng-template>
838
- * </kendo-treelist-span-column>
816
+ * <kendo-treelist-column field="field1" ></kendo-treelist-column>
817
+ * <kendo-treelist-column field="field2" ></kendo-treelist-column>
818
+ * <ng-template kendoTreeListCellTemplate let-dataItem>
819
+ * <h5>{{ dataItem.field1 }}</h5>
820
+ * <p>{{ dataItem.field2 }}</p>
821
+ * </ng-template>
822
+ * </kendo-treelist-span-column>
839
823
  * ```
840
824
  */
841
825
  class SpanColumnComponent extends ColumnBase {
@@ -863,22 +847,8 @@ class SpanColumnComponent extends ColumnBase {
863
847
  /**
864
848
  * Defines whether the edit template of the column will be rendered. The default value is `false`.
865
849
  *
866
- * > To enable the editing functionality for a spanned column, set an edit template for it.
850
+ * To enable the editing functionality for a spanned column, set an edit template for it.
867
851
  *
868
- * @example
869
- * ```html-no-run
870
- * <kendo-treelist>
871
- * <kendo-treelist-span-column [editable]="false">
872
- * <kendo-treelist-column field="UnitPrice">
873
- * </kendo-treelist-column>
874
- * <kendo-treelist-column field="ProductName">
875
- * </kendo-treelist-column>
876
- * <ng-template kendoTreeListEditTemplate>
877
- * .....
878
- * </ng-template>
879
- * </kendo-treelist-span-column>
880
- * </kendo-treelist>
881
- * ```
882
852
  */
883
853
  set editable(value) {
884
854
  this._editable = value;
@@ -923,56 +893,9 @@ class SpanColumnComponent extends ColumnBase {
923
893
  }
924
894
  /**
925
895
  * Toggles the locked (frozen) state of the columns. Locked columns are visible
926
- * at all times during the horizontal scrolling of the TreeList.
927
- *
928
- * For the option to work properly, make sure that:
929
- * - Scrolling is enabled.
930
- * - The `height` option of the TreeList is set.
931
- * - The widths of all TreeList columns are explicitly set in pixels. In this way,
932
- * the TreeList adjusts the layout of the locked and unlocked columns.
896
+ * at all times during the horizontal scrolling of the TreeList. [See example](slug:locked_columns_treelist).
933
897
  *
934
898
  * @default false
935
- *
936
- * @example
937
- * ```ts
938
- * _@Component({
939
- * selector: 'my-app',
940
- * template: `
941
- * <kendo-treelist [data]="treelistData" [scrollable]="scrollable" style="height: 200px">
942
- * <kendo-treelist-span-column [locked]="true">
943
- * <kendo-treelist-column field="ProductID" title="Product ID" [width]="120">
944
- * </kendo-treelist-column>
945
- * <kendo-treelist-column field="ProductName" title="Product Name" [width]="200">
946
- * </kendo-treelist-column>
947
- * </kendo-treelist-span-column>
948
- * <kendo-treelist-column field="UnitPrice" title="Unit Price" [width]="230">
949
- * </kendo-treelist-column>
950
- * </kendo-treelist>
951
- * `
952
- * })
953
- *
954
- * class AppComponent {
955
- * public treelistData: any[];
956
- *
957
- * constructor() {
958
- * this.treelistData = products;
959
- * }
960
- * }
961
- *
962
- * const products = [{
963
- * "ProductID": 1,
964
- * "ProductName": "Chai",
965
- * "UnitPrice": 18.0000,
966
- * "Discontinued": true
967
- * }, {
968
- * "ProductID": 2,
969
- * "ProductName": "Chang",
970
- * "UnitPrice": 19.0000,
971
- * "Discontinued": false
972
- * }
973
- * ];
974
- *
975
- * ```
976
899
  */
977
900
  set locked(value) {
978
901
  this._locked = value;
@@ -1109,12 +1032,15 @@ function isColumnGroupComponent(column) {
1109
1032
  * Represents the column group header of the TreeList
1110
1033
  * ([more information and examples]({% slug multicolumnheaders_columns_treelist %})).
1111
1034
  *
1112
- * {% meta height:533 %}
1113
- * {% embed_file configuration/multi-column-headers/app.component.ts preview %}
1114
- * {% embed_file configuration/multi-column-headers/app.module.ts %}
1115
- * {% embed_file shared/main.ts %}
1116
- * {% embed_file shared/filesystem.ts %}
1117
- * {% endmeta %}
1035
+ * @example
1036
+ * ```html
1037
+ * <kendo-treelist ...>
1038
+ * <kendo-treelist-column-group title="File Info">
1039
+ * <kendo-treelist-column field="type" title="Type"> </kendo-treelist-column>
1040
+ * <kendo-treelist-column field="size" title="Size"> </kendo-treelist-column>
1041
+ * </kendo-treelist-column-group>
1042
+ * </kendo-treelist>
1043
+ * ```
1118
1044
  */
1119
1045
  class ColumnGroupComponent extends ColumnBase {
1120
1046
  constructor(parent, optionChanges) {
@@ -1269,22 +1195,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1269
1195
  * @hidden
1270
1196
  */
1271
1197
  const EXPANDED_STATE = {
1272
- isExpanded: () => true
1198
+ isExpanded: () => true,
1273
1199
  };
1274
1200
  /**
1275
1201
  * @hidden
1276
1202
  */
1277
1203
  const UNSELECTED_STATE = {
1278
- isRowSelected: () => false
1204
+ isRowSelected: () => false,
1279
1205
  };
1280
1206
  /**
1281
1207
  * @hidden
1282
1208
  */
1283
1209
  const NOT_EDITED_STATE = {
1284
1210
  hasNew: () => false,
1285
- context: () => null
1211
+ context: () => null,
1286
1212
  };
1287
- const identity$1 = item => item;
1213
+ const identity$1 = (item) => item;
1288
1214
  function loadView(view, subject) {
1289
1215
  view.loadData();
1290
1216
  if (view.loading) {
@@ -1329,10 +1255,11 @@ class ViewRange {
1329
1255
  return true;
1330
1256
  }
1331
1257
  includeParents(_children) {
1258
+ // eslint-disable-next-line no-empty
1332
1259
  }
1333
1260
  }
1334
1261
  function isPagerSettings(pageable) {
1335
- return typeof pageable === "object";
1262
+ return typeof pageable === 'object';
1336
1263
  }
1337
1264
  class PagerRange extends ViewRange {
1338
1265
  constructor(skip, pageSize, pageable) {
@@ -1346,8 +1273,8 @@ class PagerRange extends ViewRange {
1346
1273
  return this.skip <= index && index < this.skip + this.pageSize;
1347
1274
  }
1348
1275
  levelInRange(parent, items, _rowIndex) {
1349
- return parent.level === -1 ||
1350
- (this.skip <= parent.index + items.length && parent.index + 1 < this.skip + this.pageSize);
1276
+ return (parent.level === -1 ||
1277
+ (this.skip <= parent.index + items.length && parent.index + 1 < this.skip + this.pageSize));
1351
1278
  }
1352
1279
  includeParents(children) {
1353
1280
  let parentLevel = children.parentLevel;
@@ -1390,7 +1317,7 @@ class ViewItemFactory {
1390
1317
  this.rootLevel = this.dataLevel({
1391
1318
  level: -1,
1392
1319
  id: null,
1393
- expanded: true
1320
+ expanded: true,
1394
1321
  }, options.data);
1395
1322
  }
1396
1323
  }
@@ -1405,7 +1332,8 @@ class ViewItemFactory {
1405
1332
  while (dataLevels[0] && dataLevels[0].idx >= dataLevels[0].items.length) {
1406
1333
  const dataLevel = dataLevels.shift();
1407
1334
  if (this.hasFooter && dataLevel.expanded && dataLevel.items.length) {
1408
- if (dataLevel.inRange || this.viewRange.levelInRange(dataLevel.parent, dataLevel.items, this.rowIndex)) {
1335
+ if (dataLevel.inRange ||
1336
+ this.viewRange.levelInRange(dataLevel.parent, dataLevel.items, this.rowIndex)) {
1409
1337
  result.push({
1410
1338
  type: 'footer',
1411
1339
  items: dataLevel.items,
@@ -1413,7 +1341,7 @@ class ViewItemFactory {
1413
1341
  level: dataLevel.level,
1414
1342
  parentItem: dataLevel.parent.data,
1415
1343
  parentIndex: dataLevel.parentIndex,
1416
- rowIndex: this.rowIndex
1344
+ rowIndex: this.rowIndex,
1417
1345
  });
1418
1346
  this.viewRange.includeParents(dataLevel);
1419
1347
  }
@@ -1433,7 +1361,7 @@ class ViewItemFactory {
1433
1361
  index: itemIndex,
1434
1362
  level: currentLevel.level,
1435
1363
  hasChildren: this.hasChildren(dataItem),
1436
- parent: currentLevel.parent
1364
+ parent: currentLevel.parent,
1437
1365
  };
1438
1366
  if (currentLevel.expanded) {
1439
1367
  this.rowIndex++;
@@ -1466,7 +1394,7 @@ class ViewItemFactory {
1466
1394
  observables: this.observables,
1467
1395
  total: itemCount,
1468
1396
  totalVisible: itemIndex,
1469
- totalRows: this.rowIndex
1397
+ totalRows: this.rowIndex,
1470
1398
  };
1471
1399
  }
1472
1400
  loadChildren(parent) {
@@ -1485,7 +1413,7 @@ class ViewItemFactory {
1485
1413
  if (isObservable(children)) {
1486
1414
  this.observables.push({
1487
1415
  observable: children,
1488
- parentId: parentId
1416
+ parentId: parentId,
1489
1417
  });
1490
1418
  parent.loading = true;
1491
1419
  }
@@ -1506,7 +1434,7 @@ class ViewItemFactory {
1506
1434
  aggregates: children.aggregates,
1507
1435
  expanded: parent.expanded,
1508
1436
  parentIndex: parent.index,
1509
- parent: parent
1437
+ parent: parent,
1510
1438
  };
1511
1439
  }
1512
1440
  addNew(result, parent) {
@@ -1519,7 +1447,7 @@ class ViewItemFactory {
1519
1447
  type: 'data',
1520
1448
  data: this.editState.newItem.dataItem,
1521
1449
  editContext: this.editState.newItem,
1522
- rowIndex: rowIndex
1450
+ rowIndex: rowIndex,
1523
1451
  });
1524
1452
  if (parent || inRange) {
1525
1453
  this.rowIndex++;
@@ -1555,7 +1483,7 @@ class ViewCollection {
1555
1483
  idGetter: identity$1,
1556
1484
  pageable: false,
1557
1485
  isVirtual: false,
1558
- skip: 0
1486
+ skip: 0,
1559
1487
  }, options.fields);
1560
1488
  const childrenView = new ViewCollection(viewFields, options.expandState || EXPANDED_STATE, options.editState || NOT_EDITED_STATE, options.selectionState || UNSELECTED_STATE);
1561
1489
  if (options.loaded) {
@@ -1576,20 +1504,28 @@ class ViewCollection {
1576
1504
  }
1577
1505
  return this._data;
1578
1506
  }
1579
- get length() { return this.data.length; }
1580
- get first() { return this.data[0]; }
1507
+ get length() {
1508
+ return this.data.length;
1509
+ }
1510
+ get first() {
1511
+ return this.data[0];
1512
+ }
1581
1513
  get firstItem() {
1582
- return this.find(item => item.type === 'data');
1514
+ return this.find((item) => item.type === 'data');
1515
+ }
1516
+ get last() {
1517
+ return this.data[this.data.length - 1];
1583
1518
  }
1584
- get last() { return this.data[this.data.length - 1]; }
1585
1519
  at(index) {
1586
1520
  return this.data[index];
1587
1521
  }
1588
1522
  itemIndex(item) {
1589
1523
  const idGetter = this.fieldAccessor().idGetter;
1590
- return this.data.findIndex(i => i.id === idGetter(item));
1524
+ return this.data.findIndex((i) => i.id === idGetter(item));
1525
+ }
1526
+ map(fn) {
1527
+ return this.data.map(fn);
1591
1528
  }
1592
- map(fn) { return this.data.map(fn); }
1593
1529
  filter(fn) {
1594
1530
  return this.data.filter(fn);
1595
1531
  }
@@ -1608,16 +1544,18 @@ class ViewCollection {
1608
1544
  find(fn) {
1609
1545
  return this.data.find(fn);
1610
1546
  }
1611
- toString() { return this.data.toString(); }
1547
+ toString() {
1548
+ return this.data.toString();
1549
+ }
1612
1550
  updateSelectedState() {
1613
- this.forEach(item => {
1551
+ this.forEach((item) => {
1614
1552
  if (item.type === 'data') {
1615
1553
  item.selected = this.selectionState.isRowSelected(item.data);
1616
1554
  }
1617
1555
  });
1618
1556
  }
1619
1557
  updateEditedState() {
1620
- this.forEach(item => {
1558
+ this.forEach((item) => {
1621
1559
  if (item.type === 'data') {
1622
1560
  item.editContext = this.editState.context(item.data);
1623
1561
  }
@@ -1650,7 +1588,7 @@ class ViewCollection {
1650
1588
  loadData() {
1651
1589
  const itemFactory = new ViewItemFactory(this.expandState, this.editState, this.selectionState, this.loaded, this.fieldAccessor);
1652
1590
  let result = itemFactory.generate();
1653
- if (!result.loading && result.total && (!result.items.length || !result.items.some(i => i.type === 'data'))) {
1591
+ if (!result.loading && result.total && (!result.items.length || !result.items.some((i) => i.type === 'data'))) {
1654
1592
  this.resetPage.emit();
1655
1593
  result = new ViewItemFactory(this.expandState, this.editState, this.selectionState, this.loaded, this.fieldAccessor).generate();
1656
1594
  }
@@ -1664,9 +1602,10 @@ class ViewCollection {
1664
1602
  if (!this.childrenSubscription) {
1665
1603
  this.childrenSubscription = new Subscription();
1666
1604
  }
1667
- result.observables.forEach(o => {
1605
+ result.observables.forEach((o) => {
1668
1606
  this.loaded.set(o.parentId, LOADING);
1669
- this.childrenSubscription.add(o.observable.subscribe(children => {
1607
+ this.childrenSubscription.add(o.observable.subscribe((children) => {
1608
+ // handle error, might show reload icon
1670
1609
  this.clear();
1671
1610
  this.loaded.set(o.parentId, children);
1672
1611
  this.childrenLoaded.emit();
@@ -2112,7 +2051,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2112
2051
  * * `totalPages`&mdash;The total number of available pages.
2113
2052
  *
2114
2053
  * @example
2115
- * ```
2054
+ * ```html
2116
2055
  * <kendo-treelist ...>
2117
2056
  * <kendo-treelist-column field="type"></kendo-treelist-column>
2118
2057
  * <ng-template
@@ -2981,17 +2920,17 @@ const append = (element) => {
2981
2920
  /**
2982
2921
  * @hidden
2983
2922
  */
2984
- const getDocument = element => element.ownerDocument.documentElement;
2923
+ const getDocument$1 = element => element.ownerDocument.documentElement;
2985
2924
  /**
2986
2925
  * @hidden
2987
2926
  */
2988
- const getWindow = element => element.ownerDocument.defaultView;
2927
+ const getWindow$1 = element => element.ownerDocument.defaultView;
2989
2928
  /**
2990
2929
  * @hidden
2991
2930
  */
2992
2931
  const offset = element => {
2993
- const { clientTop, clientLeft } = getDocument(element);
2994
- const { pageYOffset, pageXOffset } = getWindow(element);
2932
+ const { clientTop, clientLeft } = getDocument$1(element);
2933
+ const { pageYOffset, pageXOffset } = getWindow$1(element);
2995
2934
  const { top, left } = element.getBoundingClientRect();
2996
2935
  return {
2997
2936
  top: top + pageYOffset - clientTop,
@@ -5143,6 +5082,344 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5143
5082
  type: Injectable
5144
5083
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
5145
5084
 
5085
+ /**
5086
+ * @hidden
5087
+ */
5088
+ const isNextSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.nextElementSibling;
5089
+ /**
5090
+ * @hidden
5091
+ */
5092
+ const isPreviousSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.previousElementSibling;
5093
+ /**
5094
+ * @hidden
5095
+ */
5096
+ function getOffset(element) {
5097
+ const { clientTop, clientLeft } = getDocument(element);
5098
+ const { pageYOffset, pageXOffset } = getWindow(element);
5099
+ const { top, left } = element.getBoundingClientRect();
5100
+ return {
5101
+ top: top + pageYOffset - clientTop,
5102
+ left: left + pageXOffset - clientLeft
5103
+ };
5104
+ }
5105
+ ;
5106
+ /**
5107
+ * @hidden
5108
+ */
5109
+ const hintIcons = {
5110
+ forbidden: 'cancel',
5111
+ before: 'insert-middle',
5112
+ after: 'insert-middle',
5113
+ over: 'plus'
5114
+ };
5115
+ /**
5116
+ * @hidden
5117
+ */
5118
+ const hintSVGIcons = {
5119
+ forbidden: cancelIcon,
5120
+ before: insertMiddleIcon,
5121
+ after: insertMiddleIcon,
5122
+ over: plusIcon
5123
+ };
5124
+ /**
5125
+ * @hidden
5126
+ */
5127
+ const dropPosition = {
5128
+ forbidden: 'forbidden',
5129
+ before: 'before',
5130
+ after: 'after',
5131
+ over: 'over'
5132
+ };
5133
+ /**
5134
+ * @hidden
5135
+ */
5136
+ const hintStyles = {
5137
+ zIndex: '20000',
5138
+ display: 'flex',
5139
+ position: 'fixed'
5140
+ };
5141
+ /**
5142
+ * @hidden
5143
+ */
5144
+ const hintClasses = ['k-drag-clue', 'k-reorder-clue'];
5145
+ /**
5146
+ * @hidden
5147
+ */
5148
+ const dropIndicatorStyles = {
5149
+ zIndex: '19000',
5150
+ position: 'absolute'
5151
+ };
5152
+ /**
5153
+ * @hidden
5154
+ */
5155
+ const dropIndicatorClasses = ['k-drop-hint', 'k-drop-hint-h'];
5156
+ /**
5157
+ * @hidden
5158
+ */
5159
+ const defaultSelectors = {
5160
+ handle: '.k-table-td.k-drag-cell',
5161
+ dragTarget: '.k-table-row[data-treelist-view-index]',
5162
+ dropTarget: '.k-table-row[data-treelist-view-index]'
5163
+ };
5164
+ /**
5165
+ * @hidden
5166
+ */
5167
+ const rowIndexAttr = 'data-treelist-view-index';
5168
+ /**
5169
+ * @hidden
5170
+ */
5171
+ const findParent$1 = (collection, searchItem, field) => {
5172
+ let parent = null;
5173
+ for (const item of collection) {
5174
+ if (searchItem === item) {
5175
+ return null;
5176
+ }
5177
+ const checked = [];
5178
+ const queue = [];
5179
+ queue.push(item);
5180
+ while (queue.length !== 0) {
5181
+ const current = queue.shift();
5182
+ if (!current) {
5183
+ continue;
5184
+ }
5185
+ checked.push(current);
5186
+ if (current === searchItem) {
5187
+ return item;
5188
+ }
5189
+ if (current.hasOwnProperty(field)) {
5190
+ current[field].forEach(node => {
5191
+ if (checked.indexOf(node) === -1) {
5192
+ checked.push(node);
5193
+ queue.push(node);
5194
+ if (node === searchItem) {
5195
+ parent = current;
5196
+ return;
5197
+ }
5198
+ }
5199
+ });
5200
+ }
5201
+ if (parent) {
5202
+ return parent;
5203
+ }
5204
+ }
5205
+ }
5206
+ };
5207
+ const getDocument = element => element?.ownerDocument.documentElement;
5208
+ const getWindow = element => element?.ownerDocument.defaultView;
5209
+
5210
+ /**
5211
+ * @hidden
5212
+ */
5213
+ class RowReorderService {
5214
+ constructor(renderer) {
5215
+ this.renderer = renderer;
5216
+ this.defaultSelectors = defaultSelectors;
5217
+ this.dragTarget = null;
5218
+ this.dropTarget = null;
5219
+ this.lastDropPosition = dropPosition.forbidden;
5220
+ this.hintElement = null;
5221
+ this.rowReorder = new EventEmitter();
5222
+ }
5223
+ press(ev) {
5224
+ this.dragTarget = ev.dragTarget;
5225
+ this.offsetY = ev.dragEvent.offsetY;
5226
+ }
5227
+ dragStart() {
5228
+ this.createDropIndicator();
5229
+ }
5230
+ drag(ev) {
5231
+ if (isPresent$1(ev.hintElement) && !isPresent$1(this.hintElement)) {
5232
+ this.hintElement = ev.hintElement;
5233
+ this.decorateHint();
5234
+ }
5235
+ const position = {
5236
+ x: ev.dragEvent.clientX,
5237
+ y: ev.dragEvent.clientY - this.offsetY
5238
+ };
5239
+ if (isPresent$1(this.hintElement)) {
5240
+ this.renderer.setStyle(this.hintElement, 'left', `${position.x}px`);
5241
+ this.renderer.setStyle(this.hintElement, 'top', `${position.y}px`);
5242
+ }
5243
+ this.positionDropIndicator(ev);
5244
+ }
5245
+ dragEnter(ev) {
5246
+ this.dropTarget = ev.dropTarget;
5247
+ this.view = ev.dragData;
5248
+ }
5249
+ dragLeave() {
5250
+ this.dropTarget = null;
5251
+ this.lastDropPosition === dropPosition.forbidden && this.hide();
5252
+ }
5253
+ dragEnd() {
5254
+ this.destroyDropIndicator();
5255
+ this.dragTarget = null;
5256
+ this.dropTarget = null;
5257
+ this.hintElement = null;
5258
+ }
5259
+ drop() {
5260
+ this.destroyDropIndicator();
5261
+ const rowReorderArgs = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
5262
+ this.rowReorder.emit(rowReorderArgs);
5263
+ }
5264
+ get hintIcon() {
5265
+ return hintIcons[this.lastDropPosition];
5266
+ }
5267
+ get hintSVGIcon() {
5268
+ return hintSVGIcons[this.lastDropPosition];
5269
+ }
5270
+ getDefaultHintText(columns, data) {
5271
+ let hintText = '';
5272
+ const columnFieldsArray = columns
5273
+ .toArray()
5274
+ .filter(column => !column.hidden && isPresent$1(column.field))
5275
+ .map(column => column.field);
5276
+ const draggedDragRow = this.getDragRowPerElement(this.dragTarget, data);
5277
+ const draggedDataItem = draggedDragRow?.dataItem;
5278
+ isPresent$1(draggedDataItem) && columnFieldsArray.forEach(column => {
5279
+ const columnValue = draggedDataItem[column];
5280
+ isPresent$1(columnValue) ? hintText += `${columnValue} ` : null;
5281
+ });
5282
+ return hintText.trim();
5283
+ }
5284
+ rowReorderArgs(dragRow, dropRow, data) {
5285
+ const dragRowData = this.getDragRowPerElement(dragRow, data);
5286
+ const dropRowData = this.getDragRowPerElement(dropRow, data);
5287
+ return {
5288
+ draggedRows: [dragRowData],
5289
+ dropTargetRow: dropRowData,
5290
+ dropPosition: this.lastDropPosition
5291
+ };
5292
+ }
5293
+ isOverChild(_item) { return false; }
5294
+ reorderRows(_ev, _collection, _field) { }
5295
+ get parentIdField() {
5296
+ return this.bindingDirective.parentIdField;
5297
+ }
5298
+ get idField() {
5299
+ return this.bindingDirective.idField;
5300
+ }
5301
+ get childrenField() {
5302
+ return this.bindingDirective.childrenField;
5303
+ }
5304
+ get data() {
5305
+ return this.bindingDirective.data;
5306
+ }
5307
+ getDragRowPerElement(row, data) {
5308
+ let rowIndex = row?.getAttribute(rowIndexAttr);
5309
+ rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;
5310
+ const dataItem = rowIndex === -1 ? null : data?.at(rowIndex)?.data;
5311
+ return {
5312
+ dataItem,
5313
+ rowIndex,
5314
+ element: row
5315
+ };
5316
+ }
5317
+ createDropIndicator() {
5318
+ if (!isDocumentAvailable()) {
5319
+ return;
5320
+ }
5321
+ this.dropIndicator = document.createElement('div');
5322
+ this.decorateDropIndicator();
5323
+ this.dropIndicator.innerHTML = `
5324
+ <div class="k-drop-hint-start"></div>
5325
+ <div class="k-drop-hint-line"></div>
5326
+ `;
5327
+ document.body.appendChild(this.dropIndicator);
5328
+ this.hide();
5329
+ }
5330
+ destroyDropIndicator() {
5331
+ if (!isDocumentAvailable()) {
5332
+ return;
5333
+ }
5334
+ ;
5335
+ if (this.dropIndicator && this.dropIndicator.parentElement) {
5336
+ document.body.removeChild(this.dropIndicator);
5337
+ this.dropIndicator = null;
5338
+ }
5339
+ }
5340
+ decorateHint() {
5341
+ hintClasses.forEach(className => this.renderer.addClass(this.hintElement, className));
5342
+ Object.keys(hintStyles)
5343
+ .forEach(style => this.renderer.setStyle(this.hintElement, style, hintStyles[style]));
5344
+ }
5345
+ positionDropIndicator(ev) {
5346
+ this.lastDropPosition = this.getDropPosition(ev.dragEvent);
5347
+ this.updateDropIndicatorPosition();
5348
+ }
5349
+ decorateDropIndicator() {
5350
+ dropIndicatorClasses.forEach(className => this.renderer.addClass(this.dropIndicator, className));
5351
+ Object.keys(dropIndicatorStyles)
5352
+ .forEach(style => this.renderer.setStyle(this.dropIndicator, style, dropIndicatorStyles[style]));
5353
+ }
5354
+ getDropPosition(e) {
5355
+ if (this.dropTarget === this.dragTarget || !isPresent$1(this.dropTarget)) {
5356
+ return dropPosition.forbidden;
5357
+ }
5358
+ ;
5359
+ const itemViewPortCoords = this.dropTarget.getBoundingClientRect();
5360
+ const itemDivisionsCount = 3;
5361
+ const itemDivisionHeight = itemViewPortCoords.height / itemDivisionsCount;
5362
+ const { dropTargetRow } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
5363
+ const pointerPosition = e.clientY;
5364
+ const itemTop = itemViewPortCoords.top;
5365
+ let currentDropPosition = null;
5366
+ if (pointerPosition <= itemTop + itemDivisionHeight) {
5367
+ currentDropPosition = dropPosition.before;
5368
+ }
5369
+ else if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {
5370
+ currentDropPosition = dropPosition.after;
5371
+ }
5372
+ else {
5373
+ currentDropPosition = dropPosition.over;
5374
+ }
5375
+ if (currentDropPosition === dropPosition.before && isNextSibling(this.dropTarget, this.dragTarget)) {
5376
+ currentDropPosition = dropPosition.forbidden;
5377
+ }
5378
+ else if (currentDropPosition === dropPosition.after && isPreviousSibling(this.dropTarget, this.dragTarget)) {
5379
+ currentDropPosition = dropPosition.forbidden;
5380
+ }
5381
+ if (this.isOverChild(dropTargetRow.dataItem)) {
5382
+ currentDropPosition = dropPosition.forbidden;
5383
+ }
5384
+ return currentDropPosition;
5385
+ }
5386
+ updateDropIndicatorPosition() {
5387
+ if (this.shouldHideDropIndicator() || !this.dropTarget) {
5388
+ this.hide();
5389
+ return;
5390
+ }
5391
+ this.show();
5392
+ const destinationItemOffset = getOffset(this.dropTarget);
5393
+ let indicatorOffsetTop = destinationItemOffset.top;
5394
+ const indicatorOffsetLeft = destinationItemOffset.left + this.dropIndicator.offsetWidth / 2;
5395
+ if (this.lastDropPosition === dropPosition.after) {
5396
+ indicatorOffsetTop += this.dropTarget.offsetHeight;
5397
+ }
5398
+ this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorOffsetLeft}px`);
5399
+ this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorOffsetTop}px`);
5400
+ }
5401
+ shouldHideDropIndicator() {
5402
+ return this.lastDropPosition === dropPosition.forbidden || this.lastDropPosition === dropPosition.over;
5403
+ }
5404
+ hide() {
5405
+ if (isPresent$1(this.dropIndicator)) {
5406
+ this.renderer.setStyle(this.dropIndicator, 'display', 'none');
5407
+ }
5408
+ }
5409
+ show() {
5410
+ if (isPresent$1(this.dropIndicator)) {
5411
+ this.renderer.removeStyle(this.dropIndicator, 'display');
5412
+ }
5413
+ }
5414
+ }
5415
+ RowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
5416
+ RowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService });
5417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, decorators: [{
5418
+ type: Injectable
5419
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rowReorder: [{
5420
+ type: Output
5421
+ }] } });
5422
+
5146
5423
  /* eslint-disable @typescript-eslint/no-inferrable-types */
5147
5424
  /**
5148
5425
  * @hidden
@@ -5708,8 +5985,9 @@ class StringFilterComponent extends BaseFilterCellComponent {
5708
5985
  super(filterService);
5709
5986
  this.localization = localization;
5710
5987
  /**
5711
- * The default filter operator. Defaults to `contains`.
5988
+ * The default filter operator.
5712
5989
  * @type {string}
5990
+ * @default 'contains'
5713
5991
  */
5714
5992
  this.operator = "contains";
5715
5993
  }
@@ -6038,7 +6316,7 @@ StringFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
6038
6316
  [filterDelay]="0"
6039
6317
  [ngModel]="currentFilter?.value" />
6040
6318
  </kendo-treelist-filter-menu-input-wrapper>
6041
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }], directives: [{ type: i4$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i3$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]" }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }, { type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
6319
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }], directives: [{ type: i2.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i3$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]" }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }, { type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
6042
6320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterMenuInputComponent, decorators: [{
6043
6321
  type: Component,
6044
6322
  args: [{
@@ -6077,6 +6355,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6077
6355
  /**
6078
6356
  * Represents a string-filter menu component.
6079
6357
  * ([see example]({% slug builtinfiltertemplate_treelist %}#toc-configuration-components-for-filter-templates)).
6358
+ *
6359
+ * @example
6360
+ * ```html
6361
+ * <kendo-treelist-column field="name">
6362
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6363
+ * <kendo-treelist-string-filter-menu
6364
+ * [column]="column"
6365
+ * [filter]="filter"
6366
+ * [filterService]="filterService">
6367
+ * </kendo-treelist-string-filter-menu>
6368
+ * </ng-template>
6369
+ * </kendo-treelist-column>
6370
+ * ```
6371
+ *
6080
6372
  */
6081
6373
  class StringFilterMenuComponent extends StringFilterComponent {
6082
6374
  constructor(localization) {
@@ -6089,6 +6381,7 @@ class StringFilterMenuComponent extends StringFilterComponent {
6089
6381
  this.filter = { filters: [], logic: "and" };
6090
6382
  /**
6091
6383
  * Determines if the inputs of second criteria will displayed.
6384
+ * @default true
6092
6385
  */
6093
6386
  this.extra = true;
6094
6387
  }
@@ -6201,18 +6494,21 @@ class NumericFilterComponent extends BaseFilterCellComponent {
6201
6494
  super(filterService);
6202
6495
  this.localization = localization;
6203
6496
  /**
6204
- * The default filter operator. Defaults to `eq`.
6497
+ * The default filter operator.
6205
6498
  * @type {string}
6499
+ * @default 'eq'
6206
6500
  */
6207
6501
  this.operator = "eq";
6208
6502
  /**
6209
6503
  * Specifies the value that is used to increment or decrement the component value.
6210
6504
  * @type {numeric}
6505
+ * @default 1
6211
6506
  */
6212
6507
  this.step = 1;
6213
6508
  /**
6214
6509
  * Specifies whether the **Up** and **Down** spin buttons will be rendered.
6215
6510
  * @type {boolean}
6511
+ * @default true
6216
6512
  */
6217
6513
  this.spinners = true;
6218
6514
  this.defaultOperators = numericOperators(this.localization);
@@ -6336,7 +6632,7 @@ NumericFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
6336
6632
  [step]="step">
6337
6633
  </kendo-numerictextbox>
6338
6634
  </kendo-treelist-filter-menu-input-wrapper>
6339
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }, { type: i4$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
6635
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }, { type: i2.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"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
6340
6636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericFilterMenuInputComponent, decorators: [{
6341
6637
  type: Component,
6342
6638
  args: [{
@@ -6395,18 +6691,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6395
6691
  * Represents a numeric-filter menu component.
6396
6692
  *
6397
6693
  * @example
6398
- * ```html-no-run
6399
- * <kendo-treelist-column field="UnitPrice" title="Unit Price">
6400
- * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6401
- * <kendo-treelist-numeric-filter-menu
6402
- * [column]="column"
6403
- * [filter]="filter"
6404
- * [filterService]="filterService"
6405
- * >
6406
- * </kendo-treelist-numeric-filter-menu>
6407
- * </ng-template>
6408
- * </kendo-treelist-column>
6409
- * ```
6694
+ * ```html
6695
+ * <kendo-treelist-column field="UnitPrice">
6696
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6697
+ * <kendo-treelist-numeric-filter-menu
6698
+ * [column]="column"
6699
+ * [filter]="filter"
6700
+ * [filterService]="filterService">
6701
+ * </kendo-treelist-numeric-filter-menu>
6702
+ * </ng-template>
6703
+ * </kendo-treelist-column>
6704
+ * ```
6410
6705
  */
6411
6706
  class NumericFilterMenuComponent extends NumericFilterComponent {
6412
6707
  constructor(localization) {
@@ -6419,6 +6714,7 @@ class NumericFilterMenuComponent extends NumericFilterComponent {
6419
6714
  this.filter = { filters: [], logic: "and" };
6420
6715
  /**
6421
6716
  * Determines if the inputs of second criteria will displayed.
6717
+ * @default true
6422
6718
  */
6423
6719
  this.extra = true;
6424
6720
  }
@@ -6564,25 +6860,30 @@ class DateFilterComponent extends BaseFilterCellComponent {
6564
6860
  /**
6565
6861
  * The default filter operator. Defaults to `contains`.
6566
6862
  * @type {string}
6863
+ * @default 'gte'
6567
6864
  */
6568
6865
  this.operator = "gte";
6569
6866
  /**
6570
6867
  * Defines the active view that the calendar initially renders.
6571
6868
  * By default, the active view is `month`.
6572
6869
  *
6573
- * > You have to set `activeView` within the `topView`-`bottomView` range.
6870
+ * You have to set `activeView` within the `topView`-`bottomView` range.
6871
+ * @default 'month'
6574
6872
  */
6575
6873
  this.activeView = "month";
6576
6874
  /**
6577
6875
  * Defines the bottommost calendar view, to which the user can navigate.
6876
+ * @default 'month'
6578
6877
  */
6579
6878
  this.bottomView = "month";
6580
6879
  /**
6581
6880
  * Defines the topmost calendar view, to which the user can navigate.
6881
+ * @default 'century'
6582
6882
  */
6583
6883
  this.topView = "century";
6584
6884
  /**
6585
6885
  * Determines whether to display a week number column in the `month` view of the Calendar.
6886
+ * @default false
6586
6887
  */
6587
6888
  this.weekNumber = false;
6588
6889
  this.defaultOperators = dateOperators(this.localization);
@@ -6788,18 +7089,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6788
7089
  * Represents a date-filter menu component.
6789
7090
  *
6790
7091
  * @example
6791
- * ```html-no-run
6792
- * <kendo-treelist-column field="OrderDate" title="Order Date">
6793
- * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6794
- * <kendo-treelist-date-filter-menu
6795
- * [column]="column"
6796
- * [filter]="filter"
6797
- * [filterService]="filterService"
6798
- * >
6799
- * </kendo-treelist-date-filter-menu>
6800
- * </ng-template>
6801
- * </kendo-treelist-column>
6802
- * ```
7092
+ * ```html
7093
+ * <kendo-treelist-column field="OrderDate" title="Order Date">
7094
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
7095
+ * <kendo-treelist-date-filter-menu
7096
+ * [column]="column"
7097
+ * [filter]="filter"
7098
+ * [filterService]="filterService">
7099
+ * </kendo-treelist-date-filter-menu>
7100
+ * </ng-template>
7101
+ * </kendo-treelist-column>
7102
+ * ```
6803
7103
  */
6804
7104
  class DateFilterMenuComponent extends DateFilterComponent {
6805
7105
  constructor(localization) {
@@ -6812,6 +7112,7 @@ class DateFilterMenuComponent extends DateFilterComponent {
6812
7112
  this.filter = { filters: [], logic: "and" };
6813
7113
  /**
6814
7114
  * Determines if the inputs of second criteria will be displayed.
7115
+ * @default true
6815
7116
  */
6816
7117
  this.extra = true;
6817
7118
  }
@@ -7025,20 +7326,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7025
7326
  }] } });
7026
7327
 
7027
7328
  /**
7028
- * Represents a Boolean-filter menu component.
7329
+ * Represents a Boolean-filter menu component. [See example](slug:columnmenu_treelist#toc-customizing-the-content).
7029
7330
  *
7030
7331
  * @example
7031
- * ```html-no-run
7032
- * <kendo-treelist-column field="Discontinued" title="Discontinued">
7033
- * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
7034
- * <kendo-treelist-boolean-filter-menu
7035
- * [column]="column"
7036
- * [filter]="filter"
7037
- * [filterService]="filterService"
7038
- * >
7039
- * </kendo-treelist-boolean-filter-menu>
7040
- * </ng-template>
7041
- * </kendo-treelist-column>
7332
+ * ```html
7333
+ * <kendo-treelist-column field="Discontinued" title="Discontinued">
7334
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
7335
+ * <kendo-treelist-boolean-filter-menu
7336
+ * [column]="column"
7337
+ * [filter]="filter"
7338
+ * [filterService]="filterService">
7339
+ * </kendo-treelist-boolean-filter-menu>
7340
+ * </ng-template>
7341
+ * </kendo-treelist-column>
7042
7342
  * ```
7043
7343
  */
7044
7344
  class BooleanFilterMenuComponent extends BooleanFilterComponent {
@@ -7094,7 +7394,7 @@ BooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
7094
7394
  <label class="k-radio-label" [attr.for]="radioId(item.value)">{{item.text}}</label>
7095
7395
  </li>
7096
7396
  </ul>
7097
- `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.RadioButtonDirective, selector: "input[kendoRadioButton]", inputs: ["size"] }] });
7397
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.RadioButtonDirective, selector: "input[kendoRadioButton]", inputs: ["size"] }] });
7098
7398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{
7099
7399
  type: Component,
7100
7400
  args: [{
@@ -7418,7 +7718,7 @@ FilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
7418
7718
  >
7419
7719
  </kendo-treelist-filter-menu-container>
7420
7720
  </ng-template>
7421
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: FilterMenuContainerComponent, selector: "kendo-treelist-filter-menu-container", inputs: ["column", "filter", "actionsClass"], outputs: ["close"] }] });
7721
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: FilterMenuContainerComponent, selector: "kendo-treelist-filter-menu-container", inputs: ["column", "filter", "actionsClass"], outputs: ["close"] }] });
7422
7722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterMenuComponent, decorators: [{
7423
7723
  type: Component,
7424
7724
  args: [{
@@ -7456,7 +7756,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7456
7756
  *
7457
7757
  * @example
7458
7758
  * ```html
7459
- * <kendo-treelist>
7759
+ * <kendo-treelist ...>
7460
7760
  * <ng-template
7461
7761
  * kendoTreeListColumnMenuTemplate
7462
7762
  * let-service="service"
@@ -7526,7 +7826,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7526
7826
  *
7527
7827
  * @example
7528
7828
  * ```html
7529
- * <kendo-treelist>
7829
+ * <kendo-treelist ...>
7530
7830
  * <kendo-treelist-column field="ProductName">
7531
7831
  * <ng-template kendoTreeListColumnMenuTemplate>
7532
7832
  * <kendo-treelist-columnmenu-item text="Item Text" [expanded]="true">
@@ -7559,12 +7859,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7559
7859
  * Represents an item that can be placed inside a
7560
7860
  * [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
7561
7861
  *
7562
- * {% meta height:500 %}
7563
- * {% embed_file column-menu/template-item/app.component.ts preview %}
7564
- * {% embed_file column-menu/template-item/app.module.ts %}
7565
- * {% embed_file shared/main.ts %}
7566
- * {% embed_file shared/employees.ts %}
7567
- * {% endmeta %}
7862
+ * * @example
7863
+ * ```html
7864
+ * <kendo-treelist ...>
7865
+ * <ng-template kendoTreeListColumnMenuTemplate let-service="service" let-column="column">
7866
+ * <kendo-treelist-columnmenu-item text="Fit column"></kendo-treelist-columnmenu-item>
7867
+ * </ng-template>
7868
+ * </kendo-treelist>
7869
+ * ```
7568
7870
  */
7569
7871
  class ColumnMenuItemComponent {
7570
7872
  constructor() {
@@ -7619,7 +7921,7 @@ ColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
7619
7921
  <ng-container [ngTemplateOutlet]="contentTemplate.templateRef">
7620
7922
  </ng-container>
7621
7923
  <div>
7622
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
7924
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
7623
7925
  trigger('state', [
7624
7926
  state('collapsed', style({ display: 'none' })),
7625
7927
  state('expanded', style({ display: 'block' })),
@@ -7706,19 +8008,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7706
8008
  }] } });
7707
8009
 
7708
8010
  /**
7709
- * Represents a column-menu item for sorting TreeList columns that can be placed inside a
7710
- * [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
7711
- * Allows the user to sort the column.
8011
+ * Represents the column-menu item for sorting TreeList columns.
7712
8012
  *
7713
- * > You have to set the [ColumnMenuService]({% slug api_treelist_columnmenuservice %}) that is passed by
7714
- * > the template to the service input of the `kendo-treelist-columnmenu-sort` component.
8013
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8014
+ *
8015
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8016
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-sort` component.
7715
8017
  *
7716
- * {% meta height:500 %}
7717
- * {% embed_file column-menu/template-sort/app.component.ts preview %}
7718
- * {% embed_file column-menu/template-sort/app.module.ts %}
7719
- * {% embed_file shared/main.ts %}
7720
- * {% embed_file shared/employees.ts %}
7721
- * {% endmeta %}
7722
8018
  */
7723
8019
  class ColumnMenuSortComponent extends ColumnMenuItemBase {
7724
8020
  constructor(localization, sortService) {
@@ -7800,19 +8096,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7800
8096
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: SortService }]; } });
7801
8097
 
7802
8098
  /**
7803
- * Represents a column-menu item that can be placed inside a
7804
- * [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
7805
- * Allows the user to lock or unlock the columns.
8099
+ * Represents the column-menu item that allows the user to lock or unlock columns.
7806
8100
  *
7807
- * > You have to set the [ColumnMenuService]({% slug api_treelist_columnmenuservice %}) that is passed by
7808
- * > the template to the service input of the `kendo-treelist-columnmenu-lock` component.
8101
+ * The componnt can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8102
+ *
8103
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8104
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-lock` component.
7809
8105
  *
7810
- * {% meta height:500 %}
7811
- * {% embed_file column-menu/template-lock/app.component.ts preview %}
7812
- * {% embed_file column-menu/template-lock/app.module.ts %}
7813
- * {% embed_file shared/main.ts %}
7814
- * {% embed_file shared/employees.ts %}
7815
- * {% endmeta %}
7816
8106
  */
7817
8107
  class ColumnMenuLockComponent extends ColumnMenuItemBase {
7818
8108
  constructor(localization, columnInfoService, changeDetector) {
@@ -8099,18 +8389,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8099
8389
  }] } });
8100
8390
 
8101
8391
  /**
8102
- * Represents the component for selecting columns in the TreeList that can be placed
8103
- * inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8392
+ * Represents the column-menu item for selecting columns in the TreeList. [See example](slug:columnmenu_treelist#toc-column-chooser-item).
8393
+ *
8394
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8104
8395
  *
8105
- * > You have to set the [ColumnMenuService]({% slug api_treelist_columnmenuservice %}) that is passed by
8106
- * > the template to the service input of the `kendo-treelist-columnmenu-chooser` component.
8396
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8397
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-chooser` component.
8107
8398
  *
8108
- * {% meta height:500 %}
8109
- * {% embed_file column-menu/template-chooser/app.component.ts preview %}
8110
- * {% embed_file column-menu/template-chooser/app.module.ts %}
8111
- * {% embed_file shared/main.ts %}
8112
- * {% embed_file shared/employees.ts %}
8113
- * {% endmeta %}
8114
8399
  */
8115
8400
  class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8116
8401
  constructor(localization, columnInfoService, changeDetector) {
@@ -8128,6 +8413,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8128
8413
  this.collapse = new EventEmitter();
8129
8414
  /**
8130
8415
  * Specifies if the content is expanded.
8416
+ * @default false
8131
8417
  */
8132
8418
  this.expanded = false;
8133
8419
  /**
@@ -8152,7 +8438,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8152
8438
  }
8153
8439
  ColumnMenuChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: i1$1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8154
8440
  ColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColumnMenuChooserComponent, selector: "kendo-treelist-columnmenu-chooser", inputs: { expanded: "expanded" }, outputs: { expand: "expand", collapse: "collapse" }, usesInheritance: true, ngImport: i0, template: `
8155
- <kendo-treelist-columnmenu-item
8441
+ <kendo-treelist-columnmenu-item
8156
8442
  [text]="localization.get('columns')"
8157
8443
  icon="columns"
8158
8444
  [svgIcon]="columnsIcon"
@@ -8177,7 +8463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8177
8463
  args: [{
8178
8464
  selector: 'kendo-treelist-columnmenu-chooser',
8179
8465
  template: `
8180
- <kendo-treelist-columnmenu-item
8466
+ <kendo-treelist-columnmenu-item
8181
8467
  [text]="localization.get('columns')"
8182
8468
  icon="columns"
8183
8469
  [svgIcon]="columnsIcon"
@@ -8207,18 +8493,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8207
8493
  }] } });
8208
8494
 
8209
8495
  /**
8210
- * Represents the component for editing column filters in the TreeList that can be placed
8211
- * inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8496
+ * Represents the column-menu item for editing column filters in the TreeList.
8497
+ *
8498
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8212
8499
  *
8213
- * > You have to set the [ColumnMenuService]({% slug api_treelist_columnmenuservice %}) that is passed by
8214
- * > the template to the service input of the `kendo-treelist-columnmenu-filter` component.
8500
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8501
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-filter` component.
8215
8502
  *
8216
- * {% meta height:500 %}
8217
- * {% embed_file column-menu/template-filter/app.component.ts preview %}
8218
- * {% embed_file column-menu/template-filter/app.module.ts %}
8219
- * {% embed_file shared/main.ts %}
8220
- * {% embed_file shared/employees.ts %}
8221
- * {% endmeta %}
8222
8503
  */
8223
8504
  class ColumnMenuFilterComponent extends ColumnMenuItemBase {
8224
8505
  constructor(localization) {
@@ -8234,6 +8515,7 @@ class ColumnMenuFilterComponent extends ColumnMenuItemBase {
8234
8515
  this.collapse = new EventEmitter();
8235
8516
  /**
8236
8517
  * Specifies if the content is expanded.
8518
+ * @default false
8237
8519
  */
8238
8520
  this.expanded = false;
8239
8521
  /**
@@ -8295,7 +8577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8295
8577
 
8296
8578
  const POPUP_CLASS = 'k-grid-columnmenu-popup';
8297
8579
  /**
8298
- * Represents the [column menu]({% slug columnmenu_treelist %}) component.
8580
+ * Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
8299
8581
  */
8300
8582
  class ColumnMenuComponent {
8301
8583
  constructor(popupService, localization, service) {
@@ -8427,7 +8709,7 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8427
8709
  [expanded]="expandedFilter" (expand)="onFilterExpand()">
8428
8710
  </kendo-treelist-columnmenu-filter>
8429
8711
  </ng-template>
8430
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: ColumnMenuSortComponent, selector: "kendo-treelist-columnmenu-sort" }, { type: ColumnMenuLockComponent, selector: "kendo-treelist-columnmenu-lock" }, { type: ColumnMenuChooserComponent, selector: "kendo-treelist-columnmenu-chooser", inputs: ["expanded"], outputs: ["expand", "collapse"] }, { type: ColumnMenuFilterComponent, selector: "kendo-treelist-columnmenu-filter", inputs: ["expanded"], outputs: ["expand", "collapse"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
8712
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: ColumnMenuSortComponent, selector: "kendo-treelist-columnmenu-sort" }, { type: ColumnMenuLockComponent, selector: "kendo-treelist-columnmenu-lock" }, { type: ColumnMenuChooserComponent, selector: "kendo-treelist-columnmenu-chooser", inputs: ["expanded"], outputs: ["expand", "collapse"] }, { type: ColumnMenuFilterComponent, selector: "kendo-treelist-columnmenu-filter", inputs: ["expanded"], outputs: ["expand", "collapse"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
8431
8713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuComponent, decorators: [{
8432
8714
  type: Component,
8433
8715
  args: [{
@@ -8485,6 +8767,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8485
8767
 
8486
8768
  /**
8487
8769
  * Represents a component which accommodates the filter operators.
8770
+ *
8771
+ * @example
8772
+ * ```html
8773
+ * <kendo-treelist ...>
8774
+ * <kendo-treelist-column field="ProductName">
8775
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8776
+ * <input />
8777
+ * <kendo-treelist-filter-cell-operators
8778
+ * [operators]="[{text: 'Equals', value: 'eq'}]">
8779
+ * </kendo-treelist-filter-cell-operators>
8780
+ * </ng-template>
8781
+ * </kendo-treelist-column>
8782
+ * </kendo-treelist>
8783
+ * ```
8488
8784
  */
8489
8785
  class FilterCellOperatorsComponent {
8490
8786
  constructor(localization) {
@@ -8498,6 +8794,7 @@ class FilterCellOperatorsComponent {
8498
8794
  /**
8499
8795
  * Determines if the list of operators will be displayed.
8500
8796
  * @type {boolean}
8797
+ * @default true
8501
8798
  */
8502
8799
  this.showOperators = true;
8503
8800
  /**
@@ -8586,7 +8883,7 @@ FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
8586
8883
  (click)="clearClick()"
8587
8884
  (keydown)="clearKeydown($event)">
8588
8885
  </button>
8589
- `, isInline: true, components: [{ type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4$2.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }] });
8886
+ `, isInline: true, components: [{ type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4$1.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }] });
8590
8887
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellOperatorsComponent, decorators: [{
8591
8888
  type: Component,
8592
8889
  args: [{
@@ -8705,17 +9002,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8705
9002
  *
8706
9003
  * @example
8707
9004
  *
8708
- * ```html-no-run
8709
- * <kendo-treelist-column field="ProductName" title="Product Name">
8710
- * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8711
- * <kendo-treelist-string-filter-cell
8712
- * [showOperators]="false"
8713
- * [column]="column"
8714
- * [filter]="filter">
8715
- * </kendo-treelist-string-filter-cell>
8716
- * </ng-template>
8717
- * </kendo-treelist-column>
8718
- * ```
9005
+ * ```html
9006
+ * <kendo-treelist-column field="ProductName">
9007
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9008
+ * <kendo-treelist-string-filter-cell
9009
+ * [column]="column"
9010
+ * [filter]="filter">
9011
+ * </kendo-treelist-string-filter-cell>
9012
+ * </ng-template>
9013
+ * </kendo-treelist-column>
9014
+ * ```
8719
9015
  */
8720
9016
  class StringFilterCellComponent extends StringFilterComponent {
8721
9017
  constructor(filterService, localization) {
@@ -8724,12 +9020,14 @@ class StringFilterCellComponent extends StringFilterComponent {
8724
9020
  * Determines the delay time (in milliseconds) before the filter value is submitted.
8725
9021
  * A value of `0` indicates no delay. The default value is `500`.
8726
9022
  * @type {boolean}
9023
+ * @default 500
8727
9024
  */
8728
9025
  this.filterDelay = 500;
8729
9026
  /**
8730
9027
  * Determines if the drop-down filter operators will be displayed.
8731
9028
  * The default value is `true`.
8732
9029
  * @type {boolean}
9030
+ * @default true
8733
9031
  */
8734
9032
  this.showOperators = true;
8735
9033
  }
@@ -8742,7 +9040,7 @@ StringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
8742
9040
  [operators]="operators"
8743
9041
  [defaultOperator]="operator"
8744
9042
  [showOperators]="showOperators">
8745
- <input
9043
+ <input
8746
9044
  class="k-textbox k-input k-input-md k-rounded-md k-input-solid"
8747
9045
  kendoTreeListFocusable
8748
9046
  kendoFilterInput
@@ -8761,7 +9059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8761
9059
  [operators]="operators"
8762
9060
  [defaultOperator]="operator"
8763
9061
  [showOperators]="showOperators">
8764
- <input
9062
+ <input
8765
9063
  class="k-textbox k-input k-input-md k-rounded-md k-input-solid"
8766
9064
  kendoTreeListFocusable
8767
9065
  kendoFilterInput
@@ -8780,16 +9078,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8780
9078
  * Represents a numeric filter cell.
8781
9079
  *
8782
9080
  * @example
8783
- * ```html-no-run
8784
- * <kendo-treelist-column field="ProductName" title="Product Name">
8785
- * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8786
- * <kendo-treelist-numeric-filter-cell
8787
- * [column]="column"
8788
- * [filter]="filter">
8789
- * </kendo-treelist-numeric-filter-cell>
8790
- * </ng-template>
8791
- * </kendo-treelist-column>
8792
- * ```
9081
+ * ```html
9082
+ * <kendo-treelist-column field="ProductName" title="Product Name">
9083
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9084
+ * <kendo-treelist-numeric-filter-cell
9085
+ * [column]="column"
9086
+ * [filter]="filter">
9087
+ * </kendo-treelist-numeric-filter-cell>
9088
+ * </ng-template>
9089
+ * </kendo-treelist-column>
9090
+ * ```
8793
9091
  */
8794
9092
  class NumericFilterCellComponent extends NumericFilterComponent {
8795
9093
  constructor(filterService, localization) {
@@ -8797,14 +9095,15 @@ class NumericFilterCellComponent extends NumericFilterComponent {
8797
9095
  this.localization = localization;
8798
9096
  /**
8799
9097
  * Determines the delay time (in milliseconds) before the filter value is submitted.
8800
- * A value of `0` indicates no delay. The default value is `500`.
9098
+ * A value of `0` indicates no delay.
8801
9099
  * @type {boolean}
9100
+ * @default 500
8802
9101
  */
8803
9102
  this.filterDelay = 500;
8804
9103
  /**
8805
9104
  * Determines if the drop-down filter operators will be displayed.
8806
- * The default value is `true`.
8807
9105
  * @type {boolean}
9106
+ * @default true
8808
9107
  */
8809
9108
  this.showOperators = true;
8810
9109
  }
@@ -8831,7 +9130,7 @@ NumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8831
9130
  [step]="step">
8832
9131
  </kendo-numerictextbox>
8833
9132
  </kendo-treelist-filter-wrapper-cell>
8834
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i4$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
9133
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i2.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"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
8835
9134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericFilterCellComponent, decorators: [{
8836
9135
  type: Component,
8837
9136
  args: [{
@@ -8867,19 +9166,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8867
9166
 
8868
9167
  /**
8869
9168
  * Represents a Boolean filter-cell component.
9169
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-default-filter-operator).
8870
9170
  *
8871
9171
  * @example
8872
- *
8873
- * ```html-no-run
8874
- * <kendo-treelist-column field="ProductName" title="Product Name">
8875
- * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8876
- * <kendo-treelist-boolean-filter-cell
8877
- * [column]="column"
8878
- * [filter]="filter">
8879
- * </kendo-treelist-boolean-filter-cell>
8880
- * </ng-template>
8881
- * </kendo-treelist-column>
8882
- * ```
9172
+ * ```html
9173
+ * <kendo-treelist-column field="ProductName" title="Product Name">
9174
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9175
+ * <kendo-treelist-boolean-filter-cell
9176
+ * [column]="column"
9177
+ * [filter]="filter">
9178
+ * </kendo-treelist-boolean-filter-cell>
9179
+ * </ng-template>
9180
+ * </kendo-treelist-column>
9181
+ * ```
8883
9182
  */
8884
9183
  class BooleanFilterCellComponent extends BooleanFilterComponent {
8885
9184
  constructor(filterService, localization, cd) {
@@ -8940,17 +9239,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8940
9239
  *
8941
9240
  * @example
8942
9241
  *
8943
- * ```html-no-run
8944
- * <kendo-treelist-column field="OrderDate" title="Order Date">
8945
- * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8946
- * <kendo-treelist-date-filter-cell
8947
- * [showOperators]="false"
8948
- * [column]="column"
8949
- * [filter]="filter">
8950
- * </kendo-treelist-date-filter-cell>
8951
- * </ng-template>
8952
- * </kendo-treelist-column>
8953
- * ```
9242
+ * ```html
9243
+ * <kendo-treelist-column field="OrderDate">
9244
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9245
+ * <kendo-treelist-date-filter-cell
9246
+ * [column]="column"
9247
+ * [filter]="filter">
9248
+ * </kendo-treelist-date-filter-cell>
9249
+ * </ng-template>
9250
+ * </kendo-treelist-column>
9251
+ * ```
8954
9252
  */
8955
9253
  class DateFilterCellComponent extends DateFilterComponent {
8956
9254
  constructor(filterService, localization) {
@@ -8959,6 +9257,7 @@ class DateFilterCellComponent extends DateFilterComponent {
8959
9257
  /**
8960
9258
  * Determines if the drop-down filter operators will be displayed. The default value is `true`.
8961
9259
  * @type {boolean}
9260
+ * @default true
8962
9261
  */
8963
9262
  this.showOperators = true;
8964
9263
  }
@@ -10282,7 +10581,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
10282
10581
  [logicalSlaveCellsCount]="unlockedColumnsCount"
10283
10582
  >
10284
10583
  </tr>
10285
- `, isInline: true, components: [{ type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i1$3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }] });
10584
+ `, isInline: true, components: [{ type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i1$3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }] });
10286
10585
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, decorators: [{
10287
10586
  type: Component,
10288
10587
  args: [{
@@ -10653,6 +10952,10 @@ const ICON_CLASS = 'k-icon k-svg-icon';
10653
10952
  * @hidden
10654
10953
  */
10655
10954
  const IGNORE_CONTAINER_CLASSES = 'k-treelist-ignore-click';
10955
+ /**
10956
+ * @hidden
10957
+ */
10958
+ const DRAG_HANDLE_CLASS = 'k-drag-cell';
10656
10959
 
10657
10960
  /* eslint-disable @angular-eslint/pipe-prefix */
10658
10961
  /**
@@ -10719,13 +11022,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10719
11022
  * @hidden
10720
11023
  */
10721
11024
  class CellComponent {
10722
- constructor(editService, focusGroup) {
11025
+ constructor(editService, localization, focusGroup) {
10723
11026
  this.editService = editService;
11027
+ this.localization = localization;
10724
11028
  this.focusGroup = focusGroup;
10725
11029
  this.isNew = false;
10726
11030
  this.level = 0;
10727
11031
  this.caretAltDownIcon = caretAltDownIcon;
10728
11032
  this.caretAltRightIcon = caretAltRightIcon;
11033
+ this.caretAltLeftIcon = caretAltLeftIcon;
11034
+ this.reorderIcon = reorderIcon;
10729
11035
  this.cellContext = {};
10730
11036
  this._templateContext = {};
10731
11037
  this._editTemplateContext = {};
@@ -10741,6 +11047,12 @@ class CellComponent {
10741
11047
  get textNoWrapClass() {
10742
11048
  return this.column.expandable;
10743
11049
  }
11050
+ get dragHandleCellClass() {
11051
+ return isRowReorderColumn(this.column);
11052
+ }
11053
+ get dragRowHandleLabel() {
11054
+ return isRowReorderColumn(this.column) ? this.localization.get('dragRowHandleLabel') : undefined;
11055
+ }
10744
11056
  set viewItem(value) {
10745
11057
  this._viewItem = value;
10746
11058
  this.cellContext.viewItem = this.viewItem;
@@ -10807,9 +11119,25 @@ class CellComponent {
10807
11119
  context.loading = this.loading;
10808
11120
  context.rowIndex = this.viewItem.rowIndex;
10809
11121
  }
11122
+ get arrowIcon() {
11123
+ const icon = !this.isExpanded ?
11124
+ !this.localization.rtl ?
11125
+ 'caret-alt-right' :
11126
+ 'caret-alt-left' :
11127
+ 'caret-alt-down';
11128
+ return icon;
11129
+ }
11130
+ get arrowSVGIcon() {
11131
+ const icon = !this.isExpanded ?
11132
+ !this.localization.rtl ?
11133
+ this.caretAltRightIcon :
11134
+ this.caretAltLeftIcon :
11135
+ this.caretAltDownIcon;
11136
+ return icon;
11137
+ }
10810
11138
  }
10811
- CellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: FocusGroup }], target: i0.ɵɵFactoryTarget.Component });
10812
- CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoTreeListCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", level: "level", hasChildren: "hasChildren", isExpanded: "isExpanded", loading: "loading", expandIcons: "expandIcons", selected: "selected", dataItem: "dataItem", viewItem: "viewItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-checkbox-cell": "this.isCheckboxColumn", "class.k-text-nowrap": "this.textNoWrapClass" } }, ngImport: i0, template: `
11139
+ CellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: i1$1.LocalizationService }, { token: FocusGroup }], target: i0.ɵɵFactoryTarget.Component });
11140
+ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoTreeListCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", level: "level", hasChildren: "hasChildren", isExpanded: "isExpanded", loading: "loading", expandIcons: "expandIcons", selected: "selected", dataItem: "dataItem", viewItem: "viewItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-checkbox-cell": "this.isCheckboxColumn", "class.k-text-nowrap": "this.textNoWrapClass", "class.k-drag-cell": "this.dragHandleCellClass", "class.k-touch-action-none": "this.dragHandleCellClass", "attr.aria-label": "this.dragRowHandleLabel" } }, ngImport: i0, template: `
10813
11141
  <ng-container [ngSwitch]="isEdited">
10814
11142
  <ng-container *ngSwitchCase="false">
10815
11143
  <ng-container *ngIf="column.expandable">
@@ -10817,8 +11145,8 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10817
11145
  <kendo-icon-wrapper
10818
11146
  aria-hidden="true"
10819
11147
  *ngIf="hasChildren && expandIcons && !loading"
10820
- [name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
10821
- [svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
11148
+ [name]="arrowIcon"
11149
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
10822
11150
  <span class="k-icon k-i-loading" *ngIf="hasChildren && expandIcons && loading"></span>
10823
11151
  </ng-container>
10824
11152
  <ng-container *ngIf="column.templateRef"
@@ -10838,6 +11166,12 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10838
11166
  class="k-checkbox k-checkbox-md k-rounded-md"
10839
11167
  [checked]="selected" />
10840
11168
  </ng-template>
11169
+ <ng-container *ngIf="column.isRowReorderColumn && !isNew">
11170
+ <kendo-icon-wrapper
11171
+ name="reorder"
11172
+ [svgIcon]="reorderIcon">
11173
+ </kendo-icon-wrapper>
11174
+ </ng-container>
10841
11175
  </ng-container>
10842
11176
  <ng-container *ngSwitchCase="true">
10843
11177
  <ng-container
@@ -10878,7 +11212,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10878
11212
  </ng-container>
10879
11213
  </ng-container>
10880
11214
  </ng-container>
10881
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i4$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i3$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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3$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: { "levelItems": LevelItemsPipe, "valueOf": FieldAccessorPipe } });
11215
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i2.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: i3$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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3$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: { "levelItems": LevelItemsPipe, "valueOf": FieldAccessorPipe } });
10882
11216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
10883
11217
  type: Component,
10884
11218
  args: [{
@@ -10891,8 +11225,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10891
11225
  <kendo-icon-wrapper
10892
11226
  aria-hidden="true"
10893
11227
  *ngIf="hasChildren && expandIcons && !loading"
10894
- [name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
10895
- [svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
11228
+ [name]="arrowIcon"
11229
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
10896
11230
  <span class="k-icon k-i-loading" *ngIf="hasChildren && expandIcons && loading"></span>
10897
11231
  </ng-container>
10898
11232
  <ng-container *ngIf="column.templateRef"
@@ -10912,6 +11246,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10912
11246
  class="k-checkbox k-checkbox-md k-rounded-md"
10913
11247
  [checked]="selected" />
10914
11248
  </ng-template>
11249
+ <ng-container *ngIf="column.isRowReorderColumn && !isNew">
11250
+ <kendo-icon-wrapper
11251
+ name="reorder"
11252
+ [svgIcon]="reorderIcon">
11253
+ </kendo-icon-wrapper>
11254
+ </ng-container>
10915
11255
  </ng-container>
10916
11256
  <ng-container *ngSwitchCase="true">
10917
11257
  <ng-container
@@ -10954,7 +11294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10954
11294
  </ng-container>
10955
11295
  `
10956
11296
  }]
10957
- }], ctorParameters: function () { return [{ type: EditService }, { type: FocusGroup }]; }, propDecorators: { commandCellClass: [{
11297
+ }], ctorParameters: function () { return [{ type: EditService }, { type: i1$1.LocalizationService }, { type: FocusGroup }]; }, propDecorators: { commandCellClass: [{
10958
11298
  type: HostBinding,
10959
11299
  args: ['class.k-command-cell']
10960
11300
  }], isCheckboxColumn: [{
@@ -10963,6 +11303,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10963
11303
  }], textNoWrapClass: [{
10964
11304
  type: HostBinding,
10965
11305
  args: ['class.k-text-nowrap']
11306
+ }], dragHandleCellClass: [{
11307
+ type: HostBinding,
11308
+ args: ['class.k-drag-cell']
11309
+ }, {
11310
+ type: HostBinding,
11311
+ args: ['class.k-touch-action-none']
11312
+ }], dragRowHandleLabel: [{
11313
+ type: HostBinding,
11314
+ args: ['attr.aria-label']
10966
11315
  }], column: [{
10967
11316
  type: Input
10968
11317
  }], columnIndex: [{
@@ -11167,8 +11516,10 @@ class TableBodyComponent {
11167
11516
  clickHandler(eventArg) {
11168
11517
  const target = eventArg.target;
11169
11518
  const { cell, row } = this.targetElements(target);
11170
- if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) &&
11171
- !hasClasses(row, NON_DATA_ROW_CLASSES)) {
11519
+ const forbiddenCellClasses = NON_DATA_CELL_CLASSES.concat(` ${DRAG_HANDLE_CLASS}`);
11520
+ const isValidCell = cell ? !hasClasses(cell, forbiddenCellClasses) : false;
11521
+ const isValidRow = row ? !hasClasses(row, NON_DATA_ROW_CLASSES) : false;
11522
+ if (isValidRow && isValidCell) {
11172
11523
  if (this.expandClick(eventArg, row) || this.checkboxClick(cell, row, eventArg)) {
11173
11524
  return;
11174
11525
  }
@@ -12445,6 +12796,10 @@ class PagerElementComponent {
12445
12796
  this.skip = this.pagerContext.skip;
12446
12797
  this.pageSize = this.pagerContext.pageSize;
12447
12798
  this.allCount = this.pagerContext.allCount;
12799
+ this.caretAltLeftIcon = caretAltLeftIcon;
12800
+ this.caretAltToLeftIcon = caretAltToLeftIcon;
12801
+ this.caretAltRightIcon = caretAltRightIcon;
12802
+ this.caretAltToRightIcon = caretAltToRightIcon;
12448
12803
  }
12449
12804
  /**
12450
12805
  * @hidden
@@ -12502,6 +12857,18 @@ class PagerElementComponent {
12502
12857
  this.subscriptions.unsubscribe();
12503
12858
  }
12504
12859
  }
12860
+ get prevArrowIcons() {
12861
+ return !this.localization.rtl ? ['caret-alt-to-left', 'caret-alt-left'] : ['caret-alt-to-right', 'caret-alt-right'];
12862
+ }
12863
+ get prevArrowSVGIcons() {
12864
+ return !this.localization.rtl ? [this.caretAltToLeftIcon, this.caretAltLeftIcon] : [this.caretAltToRightIcon, this.caretAltRightIcon];
12865
+ }
12866
+ get nextArrowIcons() {
12867
+ return !this.localization.rtl ? ['caret-alt-right', 'caret-alt-to-right'] : ['caret-alt-left', 'caret-alt-to-left'];
12868
+ }
12869
+ get nextArrowSVGIcons() {
12870
+ return !this.localization.rtl ? [this.caretAltRightIcon, this.caretAltToRightIcon] : [this.caretAltLeftIcon, this.caretAltToLeftIcon];
12871
+ }
12505
12872
  }
12506
12873
  PagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1$1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
12507
12874
  PagerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerElementComponent, ngImport: i0 });
@@ -12518,8 +12885,6 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
12518
12885
  constructor(localization, pagerContext, cd, navigationService) {
12519
12886
  super(localization, pagerContext, cd);
12520
12887
  this.navigationService = navigationService;
12521
- this.caretAltLeftIcon = caretAltLeftIcon;
12522
- this.caretAltToLeftIcon = caretAltToLeftIcon;
12523
12888
  }
12524
12889
  /**
12525
12890
  * @hidden
@@ -12558,8 +12923,8 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12558
12923
  [attr.aria-label]="textFor('pagerFirstPage')"
12559
12924
  (click)="onButtonClick('firstPage')"
12560
12925
  role="button"
12561
- icon="caret-alt-to-left"
12562
- [svgIcon]="caretAltToLeftIcon"
12926
+ [icon]="prevArrowIcons[0]"
12927
+ [svgIcon]="prevArrowSVGIcons[0]"
12563
12928
  class="k-pager-nav k-pager-first"
12564
12929
  [disabled]="disabled"
12565
12930
  fillMode="flat"
@@ -12572,15 +12937,15 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12572
12937
  [enabled]="!disabled"
12573
12938
  class="k-pager-nav"
12574
12939
  [disabled]="disabled"
12575
- icon="caret-alt-left"
12576
- [svgIcon]="caretAltLeftIcon"
12940
+ [icon]="prevArrowIcons[1]"
12941
+ [svgIcon]="prevArrowSVGIcons[1]"
12577
12942
  fillMode="flat"
12578
12943
  rounded="none"
12579
12944
  [title]="textFor('pagerPreviousPage')"
12580
12945
  [attr.aria-label]="textFor('pagerPreviousPage')"
12581
12946
  (click)="onButtonClick('prevPage')">
12582
12947
  </button>
12583
- `, isInline: true, components: [{ type: i4$2.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12948
+ `, isInline: true, components: [{ type: i4$1.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12584
12949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
12585
12950
  type: Component,
12586
12951
  args: [{
@@ -12596,8 +12961,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12596
12961
  [attr.aria-label]="textFor('pagerFirstPage')"
12597
12962
  (click)="onButtonClick('firstPage')"
12598
12963
  role="button"
12599
- icon="caret-alt-to-left"
12600
- [svgIcon]="caretAltToLeftIcon"
12964
+ [icon]="prevArrowIcons[0]"
12965
+ [svgIcon]="prevArrowSVGIcons[0]"
12601
12966
  class="k-pager-nav k-pager-first"
12602
12967
  [disabled]="disabled"
12603
12968
  fillMode="flat"
@@ -12610,8 +12975,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12610
12975
  [enabled]="!disabled"
12611
12976
  class="k-pager-nav"
12612
12977
  [disabled]="disabled"
12613
- icon="caret-alt-left"
12614
- [svgIcon]="caretAltLeftIcon"
12978
+ [icon]="prevArrowIcons[1]"
12979
+ [svgIcon]="prevArrowSVGIcons[1]"
12615
12980
  fillMode="flat"
12616
12981
  rounded="none"
12617
12982
  [title]="textFor('pagerPreviousPage')"
@@ -12624,7 +12989,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12624
12989
 
12625
12990
  /* eslint-disable @typescript-eslint/no-inferrable-types */
12626
12991
  /**
12627
- * Displays numeric buttons to enable navigation between the pages.
12992
+ * Displays numeric buttons to enable navigation between the pages ([see example]({% slug paging_treelist %}#toc-pager-templates)).
12628
12993
  */
12629
12994
  class PagerNumericButtonsComponent extends PagerElementComponent {
12630
12995
  constructor(localization, cd, pagerContext) {
@@ -12765,7 +13130,7 @@ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
12765
13130
  [attr.title]="pageLabel(end + 1)"
12766
13131
  (click)="changePage(end)">...</button>
12767
13132
  </div>
12768
- `, isInline: true, components: [{ type: i4$2.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13133
+ `, isInline: true, components: [{ type: i4$1.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12769
13134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
12770
13135
  type: Component,
12771
13136
  args: [{
@@ -12934,7 +13299,7 @@ PagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12934
13299
  </kendo-numerictextbox>
12935
13300
  {{textFor('pagerOf')}} {{totalPages}}
12936
13301
  </span>
12937
- `, isInline: true, components: [{ type: i4$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i1$3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
13302
+ `, isInline: true, components: [{ type: i2.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"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i1$3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
12938
13303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInputComponent, decorators: [{
12939
13304
  type: Component,
12940
13305
  args: [{
@@ -12979,8 +13344,6 @@ class PagerNextButtonsComponent extends PagerElementComponent {
12979
13344
  constructor(localization, pagerContext, cd, navigationService) {
12980
13345
  super(localization, pagerContext, cd);
12981
13346
  this.navigationService = navigationService;
12982
- this.caretAltRightIcon = caretAltRightIcon;
12983
- this.caretAltToRightIcon = caretAltToRightIcon;
12984
13347
  }
12985
13348
  /**
12986
13349
  * @hidden
@@ -13015,8 +13378,8 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13015
13378
  type="button"
13016
13379
  kendoTreeListFocusable
13017
13380
  [enabled]="!disabled"
13018
- icon="caret-alt-right"
13019
- [svgIcon]="caretAltRightIcon"
13381
+ [icon]="nextArrowIcons[0]"
13382
+ [svgIcon]="nextArrowSVGIcons[0]"
13020
13383
  fillMode="flat"
13021
13384
  rounded="none"
13022
13385
  class="k-pager-nav"
@@ -13030,8 +13393,8 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13030
13393
  type="button"
13031
13394
  kendoTreeListFocusable
13032
13395
  [enabled]="!disabled"
13033
- icon="caret-alt-to-right"
13034
- [svgIcon]="caretAltToRightIcon"
13396
+ [icon]="nextArrowIcons[1]"
13397
+ [svgIcon]="nextArrowSVGIcons[1]"
13035
13398
  fillMode="flat"
13036
13399
  rounded="none"
13037
13400
  class="k-pager-nav k-pager-last"
@@ -13040,7 +13403,7 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13040
13403
  [attr.aria-label]="textFor('pagerLastPage')"
13041
13404
  (click)="onButtonClick('lastPage')">
13042
13405
  </button>
13043
- `, isInline: true, components: [{ type: i4$2.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13406
+ `, isInline: true, components: [{ type: i4$1.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13044
13407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
13045
13408
  type: Component,
13046
13409
  args: [{
@@ -13052,8 +13415,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13052
13415
  type="button"
13053
13416
  kendoTreeListFocusable
13054
13417
  [enabled]="!disabled"
13055
- icon="caret-alt-right"
13056
- [svgIcon]="caretAltRightIcon"
13418
+ [icon]="nextArrowIcons[0]"
13419
+ [svgIcon]="nextArrowSVGIcons[0]"
13057
13420
  fillMode="flat"
13058
13421
  rounded="none"
13059
13422
  class="k-pager-nav"
@@ -13067,8 +13430,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13067
13430
  type="button"
13068
13431
  kendoTreeListFocusable
13069
13432
  [enabled]="!disabled"
13070
- icon="caret-alt-to-right"
13071
- [svgIcon]="caretAltToRightIcon"
13433
+ [icon]="nextArrowIcons[1]"
13434
+ [svgIcon]="nextArrowSVGIcons[1]"
13072
13435
  fillMode="flat"
13073
13436
  rounded="none"
13074
13437
  class="k-pager-nav k-pager-last"
@@ -13240,7 +13603,7 @@ PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13240
13603
  [attr.aria-label]="textFor('pagerItemsPerPage')"
13241
13604
  (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
13242
13605
  <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
13243
- `, isInline: true, components: [{ type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4$3.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional"], exportAs: ["kendoLabel"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13606
+ `, isInline: true, components: [{ type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4$2.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }], directives: [{ type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13244
13607
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
13245
13608
  type: Component,
13246
13609
  args: [{
@@ -13642,7 +14005,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13642
14005
  class Messages extends ComponentMessages {
13643
14006
  }
13644
14007
  Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
13645
- Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Messages, inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItemsTotal: "pagerItemsTotal", selectPage: "selectPage", filter: "filter", 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", columnMenu: "columnMenu", columns: "columns", lock: "lock", unlock: "unlock", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel" }, usesInheritance: true, ngImport: i0 });
14008
+ Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Messages, inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItemsTotal: "pagerItemsTotal", selectPage: "selectPage", filter: "filter", 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", columnMenu: "columnMenu", columns: "columns", lock: "lock", unlock: "unlock", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", dragRowHandleLabel: "dragRowHandleLabel" }, usesInheritance: true, ngImport: i0 });
13646
14009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Messages, decorators: [{
13647
14010
  type: Directive,
13648
14011
  args: [{}]
@@ -13754,6 +14117,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13754
14117
  type: Input
13755
14118
  }], bottomToolbarLabel: [{
13756
14119
  type: Input
14120
+ }], dragRowHandleLabel: [{
14121
+ type: Input
13757
14122
  }] } });
13758
14123
 
13759
14124
  /**
@@ -14068,15 +14433,14 @@ const isInEditedCell = (element, treelistElement) => closest(element, matchesCla
14068
14433
  /**
14069
14434
  * Represents the Kendo UI TreeList component for Angular.
14070
14435
  *
14071
- * {% meta height:470 %}
14072
- * {% embed_file data-binding/flat/app.component.ts preview %}
14073
- * {% embed_file data-binding/flat/app.module.ts %}
14074
- * {% embed_file shared/main.ts %}
14075
- * {% embed_file shared/employees.ts %}
14076
- * {% endmeta %}
14436
+ * @example
14437
+ * ```html
14438
+ * <kendo-treelist [kendoTreeListFlatBinding]="data" ...></kendo-treelist>
14439
+ * ```
14440
+ *
14077
14441
  */
14078
14442
  class TreeListComponent {
14079
- constructor(supportService, wrapper, changeNotification, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, expandStateService, optionChanges, selectionService, localization, ctx) {
14443
+ constructor(supportService, wrapper, changeNotification, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, expandStateService, optionChanges, selectionService, localization, ctx, rowReorderService) {
14080
14444
  this.supportService = supportService;
14081
14445
  this.wrapper = wrapper;
14082
14446
  this.changeNotification = changeNotification;
@@ -14101,6 +14465,7 @@ class TreeListComponent {
14101
14465
  this.selectionService = selectionService;
14102
14466
  this.localization = localization;
14103
14467
  this.ctx = ctx;
14468
+ this.rowReorderService = rowReorderService;
14104
14469
  /**
14105
14470
  * Defines the page size used by the TreeList when [paging]({% slug paging_treelist %}) is enabled.
14106
14471
  *
@@ -14109,10 +14474,7 @@ class TreeListComponent {
14109
14474
  this.pageSize = 10;
14110
14475
  /**
14111
14476
  * Defines the scroll mode used by the TreeList.
14112
- *
14113
- * The available options are:
14114
- * - `none`&mdash;Renders no scrollbar.
14115
- * - `scrollable`&mdash;The default scroll mode. It requires the setting of the `height` option.
14477
+ * @default 'scrollable'
14116
14478
  */
14117
14479
  this.scrollable = 'scrollable';
14118
14480
  /**
@@ -14120,49 +14482,12 @@ class TreeListComponent {
14120
14482
  *
14121
14483
  * By default, the TreeList tracks changes by the index of the data item.
14122
14484
  * Edited rows are tracked by reference.
14123
- * In some cases, you might need to override the default behavior,
14124
- * for example, when you implement editing with immutable data items.
14125
- *
14126
- * The following example demonstrates how to track items only by index.
14127
14485
  *
14128
- * @example
14129
- * ```ts
14130
- * import { Component } from '@angular/core';
14131
- * import { TreeListItem } from '@progress/kendo-angular-treelist';
14132
- *
14133
- * _@Component({
14134
- * selector: 'my-app',
14135
- * template: `
14136
- * <kendo-treelist [data]="treelistData" [trackBy]="trackBy">
14137
- * </kendo-treelist>
14138
- * `
14139
- * })
14140
- * class AppComponent {
14141
- * public treelistData: any[] = products;
14142
- *
14143
- * public trackBy(index: number, item: TreeListItem): any {
14144
- * console.log(item);
14145
- * return index;
14146
- * }
14147
- * }
14148
- *
14149
- * const products = [{
14150
- * "ProductID": 1,
14151
- * "ProductName": "Chai",
14152
- * "UnitPrice": 18.0000,
14153
- * "Discontinued": true
14154
- * }, {
14155
- * "ProductID": 2,
14156
- * "ProductName": "Chang",
14157
- * "UnitPrice": 19.0000,
14158
- * "Discontinued": false
14159
- * }
14160
- * ];
14161
- * ```
14162
14486
  */
14163
14487
  this.trackBy = defaultTrackBy;
14164
14488
  /**
14165
14489
  * If set to `true`, the treelist will render only the columns in the current viewport.
14490
+ * @default false
14166
14491
  */
14167
14492
  this.virtualColumns = false;
14168
14493
  /**
@@ -14176,18 +14501,12 @@ class TreeListComponent {
14176
14501
  /**
14177
14502
  * Configures the pager of the TreeList ([see example]({% slug paging_treelist %})).
14178
14503
  *
14179
- * The available options are:
14180
- * - `buttonCount: Number`&mdash;Sets the maximum numeric buttons count before the buttons are collapsed. Defaults to `10`.
14181
- * - `info: Boolean`&mdash;Toggles the information about the current page and the total number of records. Defaults to `true`.
14182
- * - `type: PagerType`&mdash;Accepts the `numeric` (buttons with numbers) and `input` (input for typing the page number) values. Defaults to `'numeric'`.
14183
- * - `pageSizes: Boolean` or `Array<number>`&mdash;Shows a menu for selecting the page size. Defaults to `false`.
14184
- * - `previousNext: Boolean`&mdash;Toggles the **Previous** and **Next** buttons. Defaults to `true`.
14185
- * - `responsive: Boolean`&mdash;Toggles the built-in responsive behavior of the Pager. Defaults to `true`.
14186
14504
  */
14187
14505
  this.pageable = false;
14188
14506
  /**
14189
14507
  * If set to `true`, the user can use dedicated shortcuts to interact with the TreeList.
14190
14508
  * By default, navigation is disabled and the TreeList content is accessible in the normal tab sequence.
14509
+ * @default false
14191
14510
  */
14192
14511
  this.navigable = false;
14193
14512
  /**
@@ -14196,6 +14515,8 @@ class TreeListComponent {
14196
14515
  * Columns with `autoSize` set to `false` are excluded.
14197
14516
  * To dynamically update the column width to match the new content,
14198
14517
  * refer to [this example]({% slug resizing_columns_treelist %}).
14518
+ *
14519
+ * @default false
14199
14520
  */
14200
14521
  this.autoSize = false;
14201
14522
  /**
@@ -14227,7 +14548,9 @@ class TreeListComponent {
14227
14548
  /**
14228
14549
  * Specifies if the header of the treelist will be hidden. The header is visible by default.
14229
14550
  *
14230
- * > The header includes column headers and the [filter row]({% slug filtering_treelist %}#toc-filter-row).
14551
+ * The header includes column headers and the [filter row]({% slug filtering_treelist %}#toc-filter-row).
14552
+ *
14553
+ * @default false
14231
14554
  */
14232
14555
  this.hideHeader = false;
14233
14556
  /**
@@ -14336,6 +14659,11 @@ class TreeListComponent {
14336
14659
  * Used by the expand directive and the Gantt component.
14337
14660
  */
14338
14661
  this.expandStateChange = new EventEmitter();
14662
+ /**
14663
+ * Fires when the user drops the dragged row and reordering is performed.
14664
+ * Emits the [RowReorderEvent]({% slug api_treelist_rowreorderevent %}).
14665
+ */
14666
+ this.rowReorder = new EventEmitter();
14339
14667
  /**
14340
14668
  * @hidden
14341
14669
  */
@@ -14365,6 +14693,11 @@ class TreeListComponent {
14365
14693
  this._sort = new Array();
14366
14694
  this._skip = 0;
14367
14695
  this.cachedWindowWidth = 0;
14696
+ this._rowReorderable = false;
14697
+ /**
14698
+ * @hidden
14699
+ */
14700
+ this.treeListData = () => { return this.view; };
14368
14701
  this._rowClass = () => null;
14369
14702
  validatePackage(packageMetadata);
14370
14703
  this.subscriptions.add(localization.changes.subscribe(({ rtl }) => {
@@ -14427,6 +14760,11 @@ class TreeListComponent {
14427
14760
  this.view.clear();
14428
14761
  this.expandStateChange.emit(args);
14429
14762
  }
14763
+ if (this.rowReorderable) {
14764
+ this.ngZone.onStable.pipe(take(2)).subscribe(() => {
14765
+ this.notifyReorderContainers();
14766
+ });
14767
+ }
14430
14768
  }));
14431
14769
  this.subscriptions.add(this.view.childrenLoaded.subscribe(() => {
14432
14770
  this.changeDetectorRef.detectChanges();
@@ -14532,48 +14870,6 @@ class TreeListComponent {
14532
14870
  /**
14533
14871
  * Defines a function that is executed for every data row in the component.
14534
14872
  *
14535
- * @example
14536
- * ```ts
14537
- * import { Component, ViewEncapsulation } from '@angular/core';
14538
- * import { RowClassArgs } from '@progress/kendo-angular-treelist';
14539
- *
14540
- * _@Component({
14541
- * selector: 'my-app',
14542
- * encapsulation: ViewEncapsulation.None,
14543
- * styles: [`
14544
- * .k-treelist tr.even { background-color: #f45c42; }
14545
- * .k-treelist tr.odd { background-color: #41f4df; }
14546
- * `],
14547
- * template: `
14548
- * <kendo-treelist [data]="treelistData" [rowClass]="rowCallback">
14549
- * </kendo-treelist>
14550
- * `
14551
- * })
14552
- * class AppComponent {
14553
- * public treelistData: any[] = products;
14554
- *
14555
- * public rowCallback(context: RowClassArgs) {
14556
- * const isEven = context.index % 2 === 0;
14557
- * return {
14558
- * even: isEven,
14559
- * odd: !isEven
14560
- * };
14561
- * }
14562
- * }
14563
- *
14564
- * const products = [{
14565
- * "ProductID": 1,
14566
- * "ProductName": "Chai",
14567
- * "UnitPrice": 18.0000,
14568
- * "Discontinued": true
14569
- * }, {
14570
- * "ProductID": 2,
14571
- * "ProductName": "Chang",
14572
- * "UnitPrice": 19.0000,
14573
- * "Discontinued": false
14574
- * }
14575
- * ];
14576
- * ```
14577
14873
  */
14578
14874
  set rowClass(fn) {
14579
14875
  if (typeof fn !== 'function') {
@@ -14617,7 +14913,7 @@ class TreeListComponent {
14617
14913
  this.selectionService.settings = value;
14618
14914
  }
14619
14915
  /**
14620
- * Provides a callback that determines if the given row / cell is selected.
14916
+ * Provides a callback that determines if the given row or cell is selected.
14621
14917
  */
14622
14918
  set isSelected(value) {
14623
14919
  if (typeof value !== 'function' && isDevMode()) {
@@ -14625,6 +14921,26 @@ class TreeListComponent {
14625
14921
  }
14626
14922
  this.selectionService.isSelected = value;
14627
14923
  }
14924
+ /**
14925
+ * Enables the [row reordering]({% slug treelist_row_reordering %}) of the TreeList.
14926
+ * @default false
14927
+ */
14928
+ set rowReorderable(value) {
14929
+ this._rowReorderable = value;
14930
+ if (value) {
14931
+ this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
14932
+ hasObservers(this.rowReorder) && this.ngZone.run(() => {
14933
+ this.rowReorder.emit(args);
14934
+ });
14935
+ });
14936
+ }
14937
+ else {
14938
+ this.rowReorderSubscription?.unsubscribe();
14939
+ }
14940
+ }
14941
+ get rowReorderable() {
14942
+ return this._rowReorderable;
14943
+ }
14628
14944
  /**
14629
14945
  * @hidden
14630
14946
  */
@@ -14886,6 +15202,30 @@ class TreeListComponent {
14886
15202
  this.ngZone = null;
14887
15203
  clearTimeout(this.pageChangeTimeout);
14888
15204
  }
15205
+ /**
15206
+ * @hidden
15207
+ */
15208
+ handleReorderEvents(ev, evType) {
15209
+ this.rowReorderService[evType](ev);
15210
+ }
15211
+ /**
15212
+ * @hidden
15213
+ */
15214
+ getDefaultSelectors(type) {
15215
+ return this.rowReorderService.defaultSelectors[type];
15216
+ }
15217
+ /**
15218
+ * @hidden
15219
+ */
15220
+ getHintSettings(setting) {
15221
+ return this.rowReorderService[setting];
15222
+ }
15223
+ /**
15224
+ * @hidden
15225
+ */
15226
+ get hintText() {
15227
+ return this.rowReorderService.getDefaultHintText(this.columnList, this.view);
15228
+ }
14889
15229
  /**
14890
15230
  * @hidden
14891
15231
  */
@@ -15027,7 +15367,7 @@ class TreeListComponent {
15027
15367
  * Exports the TreeList element to a Drawing [`Group`]({% slug api_kendo-drawing_group %}) by using the `kendo-treelist-pdf` component options.
15028
15368
  * ([see example]({% slug pdfexport_treelist %}#toc-exporting-multiple-treelists-to-the-same-pdf)).
15029
15369
  *
15030
- * @return {Promise} - A promise that will be resolved with the Drawing `Group`.
15370
+ * @return {Promise} A promise that will be resolved with the Drawing `Group`.
15031
15371
  */
15032
15372
  drawPDF() {
15033
15373
  const promise = createPromise();
@@ -15045,64 +15385,8 @@ class TreeListComponent {
15045
15385
  * so that the whole text fits without wrapping. This method expects the TreeList
15046
15386
  * to be resizable (set `resizable` to `true`).
15047
15387
  * Makes sense to execute this method only
15048
- * after the TreeList is already populated with data.
15049
- *
15050
- * @example
15051
- * ```ts
15052
- * _@Component({
15053
- * selector: 'my-app',
15054
- * template: `
15055
- * <kendo-treelist
15056
- * #treelist
15057
- * [data]="treelistData"
15058
- * [resizable]="true"
15059
- * style="height: 300px">
15060
- * <ng-template kendoTreeListToolbarTemplate>
15061
- * <button kendoButton (click)="treelist.autoFitColumn(groupColumn)">
15062
- * Auto-fit the group column
15063
- * </button>
15064
- * </ng-template>
15065
- * <kendo-treelist-column-group #groupColumn title="Product Info">
15066
- * <kendo-treelist-column
15067
- * field="ProductID"
15068
- * [width]="50"
15069
- * [minResizableWidth]="30"
15070
- * title="ID">
15071
- * </kendo-treelist-column>
15388
+ * after the TreeList is already populated with data. [See example](slug:resizing_columns_treelist#toc-auto-fitting-the-content).
15072
15389
  *
15073
- * <kendo-treelist-column
15074
- * field="ProductName"
15075
- * title="Product Name">
15076
- * </kendo-treelist-column>
15077
- * </kendo-treelist-column-group>
15078
- *
15079
- * <kendo-treelist-column
15080
- * field="UnitPrice"
15081
- * title="Unit Price"
15082
- * [width]="180"
15083
- * filter="numeric"
15084
- * format="{0:c}">
15085
- * </kendo-treelist-column>
15086
- * </kendo-treelist>
15087
- * `
15088
- * })
15089
- * class AppComponent {
15090
- * public treelistData: any[] = products;
15091
- * }
15092
- *
15093
- * const products = [{
15094
- * "ProductID": 1,
15095
- * "ProductName": "Chai",
15096
- * "UnitPrice": 18.0000,
15097
- * "Discontinued": true
15098
- * }, {
15099
- * "ProductID": 2,
15100
- * "ProductName": "Chang",
15101
- * "UnitPrice": 19.0000,
15102
- * "Discontinued": false
15103
- * }
15104
- * ];
15105
- * ```
15106
15390
  */
15107
15391
  autoFitColumn(column) {
15108
15392
  this.columnResizingService.autoFit(column);
@@ -15112,69 +15396,7 @@ class TreeListComponent {
15112
15396
  * If no columns are specified, `autoFitColumns` is applied to all columns.
15113
15397
  *
15114
15398
  * This method requires the TreeList to be resizable (set `resizable` to `true`).
15115
- *
15116
- * @example
15117
- * ```ts
15118
- * _@Component({
15119
- * selector: 'my-app',
15120
- * template: `
15121
- * <kendo-treelist
15122
- * #treelist
15123
- * [data]="treelistData"
15124
- * [resizable]="true"
15125
- * style="height: 300px">
15126
- * <ng-template kendoTreeListToolbarTemplate>
15127
- * <button kendoButton (click)="treelist.autoFitColumns([firstColumn, lastColumn])">
15128
- * Auto-fit the first and last column
15129
- * </button>
15130
- * <button kendoButton (click)="treelist.autoFitColumns()">
15131
- * Auto-fit all columns
15132
- * </button>
15133
- * </ng-template>
15134
- * <kendo-treelist-column-group title="Product Info">
15135
- * <kendo-treelist-column
15136
- * #firstColumn
15137
- * field="ProductID"
15138
- * [width]="50"
15139
- * [minResizableWidth]="30"
15140
- * title="ID">
15141
- * </kendo-treelist-column>
15142
- *
15143
- * <kendo-treelist-column
15144
- * field="ProductName"
15145
- * title="Product Name"
15146
- * >
15147
- * </kendo-treelist-column>
15148
- * </kendo-treelist-column-group>
15149
- *
15150
- * <kendo-treelist-column
15151
- * #lastColumn
15152
- * field="UnitPrice"
15153
- * title="Unit Price"
15154
- * [width]="180"
15155
- * filter="numeric"
15156
- * format="{0:c}">
15157
- * </kendo-treelist-column>
15158
- * </kendo-treelist>
15159
- * `
15160
- * })
15161
- * class AppComponent {
15162
- * public treelistData: any[] = products;
15163
- * }
15164
- *
15165
- * const products = [{
15166
- * "ProductID": 1,
15167
- * "ProductName": "Chai",
15168
- * "UnitPrice": 18.0000,
15169
- * "Discontinued": true
15170
- * }, {
15171
- * "ProductID": 2,
15172
- * "ProductName": "Chang",
15173
- * "UnitPrice": 19.0000,
15174
- * "Discontinued": false
15175
- * }
15176
- * ];
15177
- * ```
15399
+ * [See example](slug:resizing_columns_treelist#toc-auto-fitting-the-content).
15178
15400
  */
15179
15401
  autoFitColumns(columns = this.columns) {
15180
15402
  let cols;
@@ -15247,9 +15469,9 @@ class TreeListComponent {
15247
15469
  /**
15248
15470
  * Focuses the cell with the specified row and column index.
15249
15471
  *
15250
- * The row index is based on the logical structure of the TreeList and does not correspond to the data item index:
15251
- * * Header rows are included, starting at index 0.
15252
- * * The row indexing is absolute and does not change with paging.
15472
+ * The row index is based on the logical structure of the TreeList and does not correspond to the data item index.
15473
+ * The row indexing is absolute and does not change with paging.
15474
+ * Header rows are included, starting at index 0.
15253
15475
  *
15254
15476
  * If the TreeList is configured for scrolling, including virtual scrolling, the scroll position will be updated.
15255
15477
  * If the row is not present on the current page, the method will have no effect.
@@ -15300,67 +15522,6 @@ class TreeListComponent {
15300
15522
  * @param {number} destIndex - The new position of the column.
15301
15523
  * @param {ColumnReorderConfig} options - Additional options.
15302
15524
  *
15303
- * @example
15304
- * ```ts
15305
- * _@Component({
15306
- * selector: 'my-app',
15307
- * template: `
15308
- * <kendo-treelist
15309
- * #treelist
15310
- * [data]="treelistData"
15311
- * [reorderable]="true"
15312
- * style="height: 300px">
15313
- * <ng-template kendoTreeListToolbarTemplate>
15314
- * <button kendoButton
15315
- * (click)="treelist.reorderColumn(groupColumn, 2, { before: true })">
15316
- * Move the group column before the last one.
15317
- * </button>
15318
- * </ng-template>
15319
- * <kendo-treelist-column-group #groupColumn title="Product Info">
15320
- * <kendo-treelist-column
15321
- * field="ProductID"
15322
- * [width]="50"
15323
- * title="ID">
15324
- * </kendo-treelist-column>
15325
- *
15326
- * <kendo-treelist-column
15327
- * field="ProductName"
15328
- * title="Product Name">
15329
- * </kendo-treelist-column>
15330
- * </kendo-treelist-column-group>
15331
- *
15332
- * <kendo-treelist-column
15333
- * field="UnitPrice"
15334
- * title="Unit Price"
15335
- * [width]="180"
15336
- * format="{0:c}">
15337
- * </kendo-treelist-column>
15338
- *
15339
- * <kendo-treelist-column
15340
- * field="Discontinued"
15341
- * title="Discontinued"
15342
- * [width]="100">
15343
- * </kendo-treelist-column>
15344
- * </kendo-treelist>
15345
- * `
15346
- * })
15347
- * class AppComponent {
15348
- * public treelistData: any[] = products;
15349
- * }
15350
- *
15351
- * const products = [{
15352
- * "ProductID": 1,
15353
- * "ProductName": "Chai",
15354
- * "UnitPrice": 18.0000,
15355
- * "Discontinued": true
15356
- * }, {
15357
- * "ProductID": 2,
15358
- * "ProductName": "Chang",
15359
- * "UnitPrice": 19.0000,
15360
- * "Discontinued": false
15361
- * }
15362
- * ];
15363
- * ```
15364
15525
  */
15365
15526
  reorderColumn(source, destIndex, options = { before: false }) {
15366
15527
  const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
@@ -15577,6 +15738,7 @@ class TreeListComponent {
15577
15738
  this.closeCell();
15578
15739
  this.cancelCell();
15579
15740
  this.dataStateChange.emit(x);
15741
+ this.rowReorderable && this.notifyReorderContainers();
15580
15742
  }));
15581
15743
  }
15582
15744
  attachEditHandlers() {
@@ -15841,9 +16003,13 @@ class TreeListComponent {
15841
16003
  this.columns.reset(columns.toArray());
15842
16004
  this.columns.notifyOnChanges();
15843
16005
  }
16006
+ notifyReorderContainers() {
16007
+ this.dragTargetContainer?.notify();
16008
+ this.dropTargetContainer?.notify();
16009
+ }
15844
16010
  }
15845
- TreeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListComponent, deps: [{ token: BrowserSupportService }, { token: i0.ElementRef }, { token: ChangeNotificationService }, { 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: ExpandStateService }, { token: OptionChangesService }, { token: SelectionService }, { token: i1$1.LocalizationService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });
15846
- TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeListComponent, selector: "kendo-treelist", inputs: { ariaLabel: ["aria-label", "ariaLabel"], data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", skip: "skip", scrollable: "scrollable", sort: "sort", trackBy: "trackBy", filter: "filter", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", idField: "idField", selectable: "selectable", isSelected: "isSelected", columnsRef: ["columns", "columnsRef"], fetchChildren: "fetchChildren", hasChildren: "hasChildren", isExpanded: "isExpanded" }, outputs: { selectionChange: "selectionChange", filterChange: "filterChange", pageChange: "pageChange", sortChange: "sortChange", dataStateChange: "dataStateChange", 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", scrollBottom: "scrollBottom", contentScroll: "contentScroll", expandEvent: "expand", collapseEvent: "collapse", expandStateChange: "expandStateChange" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClasses", "class.k-grid-md": "this.hostClasses", "class.k-treelist": "this.hostClasses", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
16011
+ TreeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListComponent, deps: [{ token: BrowserSupportService }, { token: i0.ElementRef }, { token: ChangeNotificationService }, { 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: ExpandStateService }, { token: OptionChangesService }, { token: SelectionService }, { token: i1$1.LocalizationService }, { token: ContextService }, { token: RowReorderService }], target: i0.ɵɵFactoryTarget.Component });
16012
+ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeListComponent, selector: "kendo-treelist", inputs: { ariaLabel: ["aria-label", "ariaLabel"], data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", skip: "skip", scrollable: "scrollable", sort: "sort", trackBy: "trackBy", filter: "filter", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", idField: "idField", selectable: "selectable", isSelected: "isSelected", rowReorderable: "rowReorderable", columnsRef: ["columns", "columnsRef"], fetchChildren: "fetchChildren", hasChildren: "hasChildren", isExpanded: "isExpanded" }, outputs: { selectionChange: "selectionChange", filterChange: "filterChange", pageChange: "pageChange", sortChange: "sortChange", dataStateChange: "dataStateChange", 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", scrollBottom: "scrollBottom", contentScroll: "contentScroll", expandEvent: "expand", collapseEvent: "collapse", expandStateChange: "expandStateChange", rowReorder: "rowReorder" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClasses", "class.k-grid-md": "this.hostClasses", "class.k-treelist": "this.hostClasses", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
15847
16013
  BrowserSupportService,
15848
16014
  LocalizationService,
15849
16015
  ColumnInfoService,
@@ -15884,8 +16050,9 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
15884
16050
  provide: ExpandableTreeComponent,
15885
16051
  useExisting: forwardRef(() => TreeListComponent)
15886
16052
  },
15887
- ContextService
15888
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { 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: ["kendoTreeList"], usesOnChanges: true, ngImport: i0, template: `
16053
+ ContextService,
16054
+ RowReorderService
16055
+ ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { 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: ["kendoTreeList"], usesOnChanges: true, ngImport: i0, template: `
15889
16056
  <ng-container kendoTreeListLocalizedMessages
15890
16057
 
15891
16058
  i18n-noRecords="kendo.treelist.noRecords|The label visible in the TreeList when there are no records"
@@ -16046,6 +16213,8 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16046
16213
 
16047
16214
  i18n-bottomToolbarLabel="kendo.treelist.bottomToolbarLabel|The label of the TreeList bottom toolbar"
16048
16215
  bottomToolbarLabel="Bottom toolbar"
16216
+ i18n-dragRowHandleLabel="kendo.treelist.dragRowHandleLabel|The label for the TreeList drag row handle"
16217
+ dragRowHandleLabel="Drag row"
16049
16218
  >
16050
16219
  </ng-container>
16051
16220
  <kendo-treelist-toolbar
@@ -16063,7 +16232,24 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16063
16232
  [attr.aria-rowcount]="ariaRowCount"
16064
16233
  [attr.aria-colcount]="ariaColCount"
16065
16234
  [attr.aria-multiselectable]="ariaMultiselectable"
16066
- [attr.aria-label]="ariaLabel">
16235
+ [attr.aria-label]="ariaLabel"
16236
+ kendoDragTargetContainer
16237
+ kendoDropTargetContainer
16238
+ mode="manual"
16239
+ [dragDisabled]="!rowReorderable"
16240
+ [dropDisabled]="!rowReorderable"
16241
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
16242
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
16243
+ [dragHandle]="getDefaultSelectors('handle')"
16244
+ [hint]="{hintTemplate: defaultHint}"
16245
+ (onPress)="handleReorderEvents($event, 'press')"
16246
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
16247
+ (onDrag)="handleReorderEvents($event, 'drag')"
16248
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
16249
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
16250
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
16251
+ (onDrop)="handleReorderEvents($event, 'drop')"
16252
+ [dragData]="treeListData">
16067
16253
  <ng-template [ngIf]="isScrollable">
16068
16254
  <div *ngIf="!hideHeader"
16069
16255
  class="k-grid-header"
@@ -16150,14 +16336,14 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16150
16336
  [virtualColumns]="virtualColumns"
16151
16337
  [expandIcons]="expandIcons"
16152
16338
  (scrollBottom)="notifyScrollBottom()"
16153
- (contentScroll)="contentScroll.emit($event)"
16339
+ (contentScroll)="contentScroll.emit($event)"
16154
16340
  kendoDraggable
16155
16341
  kendoTreeListSelectionMarquee
16156
16342
  [enableDrag]="marqueeSelection">
16157
16343
  </kendo-treelist-list>
16158
16344
  </ng-template>
16159
16345
  <ng-template [ngIf]="!isScrollable">
16160
- <table
16346
+ <table
16161
16347
  class="k-table k-table-md k-grid-header-table"
16162
16348
  [style.table-layout]="resizable ? 'fixed' : null">
16163
16349
  <colgroup kendoTreeListColGroup
@@ -16215,7 +16401,16 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16215
16401
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
16216
16402
  [attr.aria-controls]="ariaRootId">
16217
16403
  </kendo-treelist-toolbar>
16218
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-treelist-toolbar", inputs: ["position", "navigable"] }, { type: ColGroupComponent, selector: "[kendoTreeListColGroup]", inputs: ["columns"] }, { type: HeaderComponent, selector: "[kendoTreeListHeader]", inputs: ["totalColumnLevels", "columns", "scrollable", "filterable", "sort", "filter", "sortable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount"] }, { type: ListComponent, selector: "kendo-treelist-list", inputs: ["view", "total", "rowHeight", "take", "skip", "columns", "noRecordsTemplate", "filterable", "rowClass", "loading", "trackBy", "virtualColumns", "isVirtual", "expandIcons"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: TableBodyComponent, selector: "[kendoTreeListTableBody]", inputs: ["columns", "allColumns", "noRecordsTemplate", "view", "skip", "filterable", "noRecordsText", "isLocked", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "expandIcons", "trackBy", "rowClass"] }, { type: LoadingComponent, selector: "[kendoTreeListLoading]" }, { type: PagerComponent, selector: "kendo-treelist-pager", inputs: ["allCount", "total", "skip", "navigable", "pageSize", "options", "template"], outputs: ["pageChange"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoTreeListLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: ResizableContainerDirective, selector: "[kendoTreeListResizableContainer]", inputs: ["lockedWidth", "kendoTreeListResizableContainer"] }, { type: i1$3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: MarqueeDirective, selector: "[kendoTreeListSelectionMarquee]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16404
+
16405
+ <ng-template #defaultHint>
16406
+ <kendo-icon-wrapper
16407
+ [name]="getHintSettings('hintIcon')"
16408
+ [svgIcon]="getHintSettings('hintSVGIcon')"
16409
+ innerCssClass="k-drag-status">
16410
+ </kendo-icon-wrapper>
16411
+ {{hintText}}
16412
+ </ng-template>
16413
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-treelist-toolbar", inputs: ["position", "navigable"] }, { type: ColGroupComponent, selector: "[kendoTreeListColGroup]", inputs: ["columns"] }, { type: HeaderComponent, selector: "[kendoTreeListHeader]", inputs: ["totalColumnLevels", "columns", "scrollable", "filterable", "sort", "filter", "sortable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount"] }, { type: ListComponent, selector: "kendo-treelist-list", inputs: ["view", "total", "rowHeight", "take", "skip", "columns", "noRecordsTemplate", "filterable", "rowClass", "loading", "trackBy", "virtualColumns", "isVirtual", "expandIcons"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: TableBodyComponent, selector: "[kendoTreeListTableBody]", inputs: ["columns", "allColumns", "noRecordsTemplate", "view", "skip", "filterable", "noRecordsText", "isLocked", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "expandIcons", "trackBy", "rowClass"] }, { type: LoadingComponent, selector: "[kendoTreeListLoading]" }, { type: PagerComponent, selector: "kendo-treelist-pager", inputs: ["allCount", "total", "skip", "navigable", "pageSize", "options", "template"], outputs: ["pageChange"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoTreeListLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i32.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { type: i32.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: ResizableContainerDirective, selector: "[kendoTreeListResizableContainer]", inputs: ["lockedWidth", "kendoTreeListResizableContainer"] }, { type: i1$3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: MarqueeDirective, selector: "[kendoTreeListSelectionMarquee]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16219
16414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListComponent, decorators: [{
16220
16415
  type: Component,
16221
16416
  args: [{
@@ -16263,7 +16458,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16263
16458
  provide: ExpandableTreeComponent,
16264
16459
  useExisting: forwardRef(() => TreeListComponent)
16265
16460
  },
16266
- ContextService
16461
+ ContextService,
16462
+ RowReorderService
16267
16463
  ],
16268
16464
  selector: 'kendo-treelist',
16269
16465
  template: `
@@ -16427,6 +16623,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16427
16623
 
16428
16624
  i18n-bottomToolbarLabel="kendo.treelist.bottomToolbarLabel|The label of the TreeList bottom toolbar"
16429
16625
  bottomToolbarLabel="Bottom toolbar"
16626
+ i18n-dragRowHandleLabel="kendo.treelist.dragRowHandleLabel|The label for the TreeList drag row handle"
16627
+ dragRowHandleLabel="Drag row"
16430
16628
  >
16431
16629
  </ng-container>
16432
16630
  <kendo-treelist-toolbar
@@ -16444,7 +16642,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16444
16642
  [attr.aria-rowcount]="ariaRowCount"
16445
16643
  [attr.aria-colcount]="ariaColCount"
16446
16644
  [attr.aria-multiselectable]="ariaMultiselectable"
16447
- [attr.aria-label]="ariaLabel">
16645
+ [attr.aria-label]="ariaLabel"
16646
+ kendoDragTargetContainer
16647
+ kendoDropTargetContainer
16648
+ mode="manual"
16649
+ [dragDisabled]="!rowReorderable"
16650
+ [dropDisabled]="!rowReorderable"
16651
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
16652
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
16653
+ [dragHandle]="getDefaultSelectors('handle')"
16654
+ [hint]="{hintTemplate: defaultHint}"
16655
+ (onPress)="handleReorderEvents($event, 'press')"
16656
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
16657
+ (onDrag)="handleReorderEvents($event, 'drag')"
16658
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
16659
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
16660
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
16661
+ (onDrop)="handleReorderEvents($event, 'drop')"
16662
+ [dragData]="treeListData">
16448
16663
  <ng-template [ngIf]="isScrollable">
16449
16664
  <div *ngIf="!hideHeader"
16450
16665
  class="k-grid-header"
@@ -16531,14 +16746,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16531
16746
  [virtualColumns]="virtualColumns"
16532
16747
  [expandIcons]="expandIcons"
16533
16748
  (scrollBottom)="notifyScrollBottom()"
16534
- (contentScroll)="contentScroll.emit($event)"
16749
+ (contentScroll)="contentScroll.emit($event)"
16535
16750
  kendoDraggable
16536
16751
  kendoTreeListSelectionMarquee
16537
16752
  [enableDrag]="marqueeSelection">
16538
16753
  </kendo-treelist-list>
16539
16754
  </ng-template>
16540
16755
  <ng-template [ngIf]="!isScrollable">
16541
- <table
16756
+ <table
16542
16757
  class="k-table k-table-md k-grid-header-table"
16543
16758
  [style.table-layout]="resizable ? 'fixed' : null">
16544
16759
  <colgroup kendoTreeListColGroup
@@ -16596,9 +16811,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16596
16811
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
16597
16812
  [attr.aria-controls]="ariaRootId">
16598
16813
  </kendo-treelist-toolbar>
16814
+
16815
+ <ng-template #defaultHint>
16816
+ <kendo-icon-wrapper
16817
+ [name]="getHintSettings('hintIcon')"
16818
+ [svgIcon]="getHintSettings('hintSVGIcon')"
16819
+ innerCssClass="k-drag-status">
16820
+ </kendo-icon-wrapper>
16821
+ {{hintText}}
16822
+ </ng-template>
16599
16823
  `
16600
16824
  }]
16601
- }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: i0.ElementRef }, { type: ChangeNotificationService }, { 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: ExpandStateService }, { type: OptionChangesService }, { type: SelectionService }, { type: i1$1.LocalizationService }, { type: ContextService }]; }, propDecorators: { ariaLabel: [{
16825
+ }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: i0.ElementRef }, { type: ChangeNotificationService }, { 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: ExpandStateService }, { type: OptionChangesService }, { type: SelectionService }, { type: i1$1.LocalizationService }, { type: ContextService }, { type: RowReorderService }]; }, propDecorators: { ariaLabel: [{
16602
16826
  type: Input,
16603
16827
  args: ['aria-label']
16604
16828
  }], data: [{
@@ -16651,6 +16875,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16651
16875
  type: Input
16652
16876
  }], isSelected: [{
16653
16877
  type: Input
16878
+ }], rowReorderable: [{
16879
+ type: Input
16654
16880
  }], selectionChange: [{
16655
16881
  type: Output
16656
16882
  }], filterChange: [{
@@ -16699,6 +16925,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16699
16925
  args: ['collapse']
16700
16926
  }], expandStateChange: [{
16701
16927
  type: Output
16928
+ }], rowReorder: [{
16929
+ type: Output
16702
16930
  }], columnsRef: [{
16703
16931
  type: Input,
16704
16932
  args: ['columns']
@@ -16750,6 +16978,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16750
16978
  }], ariaRoot: [{
16751
16979
  type: ViewChild,
16752
16980
  args: ['ariaRoot', { static: true }]
16981
+ }], dragTargetContainer: [{
16982
+ type: ViewChild,
16983
+ args: [DragTargetContainerDirective]
16984
+ }], dropTargetContainer: [{
16985
+ type: ViewChild,
16986
+ args: [DropTargetContainerDirective]
16753
16987
  }], fetchChildren: [{
16754
16988
  type: Input
16755
16989
  }], hasChildren: [{
@@ -16760,7 +16994,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16760
16994
 
16761
16995
  /**
16762
16996
  * Custom component messages override default component messages
16763
- * ([see example]({% slug globalization_treelist %}#toc-localization)).
16997
+ * ([see example](slug:globalization_treelist#toc-custom-messages)).
16764
16998
  */
16765
16999
  class CustomMessagesComponent extends Messages {
16766
17000
  constructor(service) {
@@ -16876,7 +17110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16876
17110
  }] } });
16877
17111
 
16878
17112
  /**
16879
- * Represents the checkbox for selecting rows in the TreeList.
17113
+ * Represents the checkbox for selecting rows in the TreeList. [See example](slug:selection_treelist#toc-select-all-checkbox).
16880
17114
  */
16881
17115
  class CheckboxColumnComponent extends ColumnBase {
16882
17116
  constructor(parent) {
@@ -16927,6 +17161,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16927
17161
  args: [CellTemplateDirective, { static: false }]
16928
17162
  }] } });
16929
17163
 
17164
+ /**
17165
+ * Represents the drag handle for reordering rows in the TreeList.
17166
+ */
17167
+ class RowReorderColumnComponent extends ColumnBase {
17168
+ constructor(parent) {
17169
+ super(parent);
17170
+ this.parent = parent;
17171
+ /**
17172
+ * @hidden
17173
+ */
17174
+ this.isRowReorderColumn = true;
17175
+ }
17176
+ }
17177
+ 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 }], target: i0.ɵɵFactoryTarget.Component });
17178
+ RowReorderColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RowReorderColumnComponent, selector: "kendo-treelist-rowreorder-column", providers: [
17179
+ {
17180
+ provide: ColumnBase,
17181
+ useExisting: forwardRef(() => RowReorderColumnComponent)
17182
+ }
17183
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
17184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, decorators: [{
17185
+ type: Component,
17186
+ args: [{
17187
+ providers: [
17188
+ {
17189
+ provide: ColumnBase,
17190
+ useExisting: forwardRef(() => RowReorderColumnComponent)
17191
+ }
17192
+ ],
17193
+ selector: 'kendo-treelist-rowreorder-column',
17194
+ template: ``
17195
+ }]
17196
+ }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{
17197
+ type: SkipSelf
17198
+ }, {
17199
+ type: Host
17200
+ }, {
17201
+ type: Optional
17202
+ }] }]; } });
17203
+
16930
17204
  const exportedModules$3 = [
16931
17205
  ColumnComponent,
16932
17206
  ColumnGroupComponent,
@@ -16940,7 +17214,8 @@ const exportedModules$3 = [
16940
17214
  SpanColumnComponent,
16941
17215
  TableDirective,
16942
17216
  LoadingComponent,
16943
- CheckboxColumnComponent
17217
+ CheckboxColumnComponent,
17218
+ RowReorderColumnComponent
16944
17219
  ];
16945
17220
  /**
16946
17221
  * @hidden
@@ -16951,6 +17226,7 @@ class SharedModule {
16951
17226
  ColumnComponent,
16952
17227
  SpanColumnComponent,
16953
17228
  CheckboxColumnComponent,
17229
+ RowReorderColumnComponent,
16954
17230
  ColumnGroupComponent,
16955
17231
  FocusableDirective
16956
17232
  ];
@@ -16969,7 +17245,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
16969
17245
  SpanColumnComponent,
16970
17246
  TableDirective,
16971
17247
  LoadingComponent,
16972
- CheckboxColumnComponent], imports: [CommonModule, IconsModule], exports: [ColumnComponent,
17248
+ CheckboxColumnComponent,
17249
+ RowReorderColumnComponent], imports: [CommonModule, IconsModule], exports: [ColumnComponent,
16973
17250
  ColumnGroupComponent,
16974
17251
  LogicalCellDirective,
16975
17252
  LogicalRowDirective,
@@ -16981,7 +17258,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
16981
17258
  SpanColumnComponent,
16982
17259
  TableDirective,
16983
17260
  LoadingComponent,
16984
- CheckboxColumnComponent, DraggableModule, IconsModule] });
17261
+ CheckboxColumnComponent,
17262
+ RowReorderColumnComponent, DraggableModule, IconsModule] });
16985
17263
  SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, imports: [[CommonModule, IconsModule], DraggableModule, IconsModule] });
16986
17264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
16987
17265
  type: NgModule,
@@ -16994,10 +17272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16994
17272
 
16995
17273
  /**
16996
17274
  * Represents the `Contains` (**Contains**) filter operator.
16997
- *
16998
- * For more information and examples, refer to:
16999
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17000
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17275
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17001
17276
  */
17002
17277
  class ContainsFilterOperatorComponent extends FilterOperatorBase {
17003
17278
  constructor(localization) { super("contains", localization); }
@@ -17025,10 +17300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17025
17300
 
17026
17301
  /**
17027
17302
  * Represents the `DoesNotContain` (**Does not contain**) filter operator.
17028
- *
17029
- * For more information and examples, refer to:
17030
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17031
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17303
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17032
17304
  */
17033
17305
  class DoesNotContainFilterOperatorComponent extends FilterOperatorBase {
17034
17306
  constructor(localization) { super("doesnotcontain", localization); }
@@ -17056,10 +17328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17056
17328
 
17057
17329
  /**
17058
17330
  * Represents the `EndsWith` (**Ends with**) string filter operator.
17059
- *
17060
- * For more information and examples, refer to:
17061
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17062
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17331
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17063
17332
  */
17064
17333
  class EndsWithFilterOperatorComponent extends FilterOperatorBase {
17065
17334
  constructor(localization) { super("endswith", localization); }
@@ -17087,10 +17356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17087
17356
 
17088
17357
  /**
17089
17358
  * Represents the `Equal` (**Is equal to**) filter operator.
17090
- *
17091
- * For more information and examples, refer to:
17092
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17093
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17359
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17094
17360
  */
17095
17361
  class EqualFilterOperatorComponent extends FilterOperatorBase {
17096
17362
  constructor(localization) { super("eq", localization); }
@@ -17118,10 +17384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17118
17384
 
17119
17385
  /**
17120
17386
  * Represents the `IsEmpty` (**Is empty**) filter operator.
17121
- *
17122
- * For more information and examples, refer to:
17123
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17124
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17387
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17125
17388
  */
17126
17389
  class IsEmptyFilterOperatorComponent extends FilterOperatorBase {
17127
17390
  constructor(localization) { super("isempty", localization); }
@@ -17149,10 +17412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17149
17412
 
17150
17413
  /**
17151
17414
  * Represents the `IsNotEmpty` (**Is not empty**) filter operator.
17152
- *
17153
- * For more information and examples, refer to:
17154
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17155
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17415
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17156
17416
  */
17157
17417
  class IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {
17158
17418
  constructor(localization) { super("isnotempty", localization); }
@@ -17180,10 +17440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17180
17440
 
17181
17441
  /**
17182
17442
  * Represents the `IsNotNull` (**Is not null**) filter operator.
17183
- *
17184
- * For more information and examples, refer to:
17185
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17186
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17443
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17187
17444
  */
17188
17445
  class IsNotNullFilterOperatorComponent extends FilterOperatorBase {
17189
17446
  constructor(localization) { super("isnotnull", localization); }
@@ -17211,10 +17468,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17211
17468
 
17212
17469
  /**
17213
17470
  * Represents the `IsNull` (**Is null**) filter operator.
17214
- *
17215
- * For more information and examples, refer to:
17216
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17217
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17471
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17218
17472
  */
17219
17473
  class IsNullFilterOperatorComponent extends FilterOperatorBase {
17220
17474
  constructor(localization) { super("isnull", localization); }
@@ -17242,10 +17496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17242
17496
 
17243
17497
  /**
17244
17498
  * Represents the `NotEqual` (**Is not equal to**) filter operator.
17245
- *
17246
- * For more information and examples, refer to:
17247
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17248
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17499
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17249
17500
  */
17250
17501
  class NotEqualFilterOperatorComponent extends FilterOperatorBase {
17251
17502
  constructor(localization) { super("neq", localization); }
@@ -17273,10 +17524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17273
17524
 
17274
17525
  /**
17275
17526
  * Represents the `StartsWith` (**Starts with**) filter operator.
17276
- *
17277
- * For more information and examples, refer to:
17278
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17279
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17527
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17280
17528
  */
17281
17529
  class StartsWithFilterOperatorComponent extends FilterOperatorBase {
17282
17530
  constructor(localization) { super("startswith", localization); }
@@ -17304,10 +17552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17304
17552
 
17305
17553
  /*
17306
17554
  * Represents the `Greater` (**Is greater than**) numeric filter operator.
17307
- *
17308
- * For more information and examples, refer to:
17309
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17310
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17555
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17311
17556
  */
17312
17557
  class GreaterFilterOperatorComponent extends FilterOperatorBase {
17313
17558
  constructor(localization) { super("gt", localization); }
@@ -17335,10 +17580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17335
17580
 
17336
17581
  /**
17337
17582
  * Represents the `GreaterOrEqualTo` (**Is greater than or equal to**) numeric filter operator.
17338
- *
17339
- * For more information and examples, refer to:
17340
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17341
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17583
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17342
17584
  */
17343
17585
  class GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {
17344
17586
  constructor(localization) { super("gte", localization); }
@@ -17364,12 +17606,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17364
17606
  }]
17365
17607
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17366
17608
 
17367
- /*
17609
+ /**
17368
17610
  * Represents the `Less` (**Is less than**) numeric filter operator.
17369
- *
17370
- * For more information and examples, refer to:
17371
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17372
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17611
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17373
17612
  */
17374
17613
  class LessFilterOperatorComponent extends FilterOperatorBase {
17375
17614
  constructor(localization) { super("lt", localization); }
@@ -17397,10 +17636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17397
17636
 
17398
17637
  /*
17399
17638
  * Represents the `LessOrEqualTo` (**Is less than or equal to**) numeric filter operator.
17400
- *
17401
- * For more information and examples, refer to:
17402
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17403
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17639
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17404
17640
  */
17405
17641
  class LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {
17406
17642
  constructor(localization) { super("lte", localization); }
@@ -17426,12 +17662,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17426
17662
  }]
17427
17663
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17428
17664
 
17429
- /*
17665
+ /**
17430
17666
  * Represents the `Greater` (**Is after**) date filter operator.
17431
- *
17432
- * For more information and examples, refer to:
17433
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17434
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17667
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17435
17668
  */
17436
17669
  class AfterFilterOperatorComponent extends FilterOperatorBase {
17437
17670
  constructor(localization) { super("after", localization); }
@@ -17466,12 +17699,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17466
17699
  }]
17467
17700
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17468
17701
 
17469
- /*
17702
+ /**
17470
17703
  * Represents the `GreaterOrEqualTo` (**Is after or equal to**) date filter operator.
17471
- *
17472
- * For more information and examples, refer to:
17473
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17474
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17704
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17475
17705
  */
17476
17706
  class AfterEqFilterOperatorComponent extends FilterOperatorBase {
17477
17707
  constructor(localization) { super("after-eq", localization); }
@@ -17506,12 +17736,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17506
17736
  }]
17507
17737
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17508
17738
 
17509
- /*
17739
+ /**
17510
17740
  * Represents the `LessOrEqualTo` (**Is before or equal to**) date filter operator.
17511
- *
17512
- * For more information and examples, refer to:
17513
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17514
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17741
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17515
17742
  */
17516
17743
  class BeforeEqFilterOperatorComponent extends FilterOperatorBase {
17517
17744
  constructor(localization) { super("before-eq", localization); }
@@ -17546,12 +17773,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17546
17773
  }]
17547
17774
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17548
17775
 
17549
- /*
17550
- * Represents the `Less then` (**Is before**) date filter operator.
17551
- *
17552
- * For more information and examples, refer to:
17553
- * * [Setting the default filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-default-filter-operator)
17554
- * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_treelist %}#toc-setting-the-order-of-the-filter-operators)
17776
+ /**
17777
+ * Represents the `Less than` (**Is before**) date filter operator.
17778
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17555
17779
  */
17556
17780
  class BeforeFilterOperatorComponent extends FilterOperatorBase {
17557
17781
  constructor(localization) { super("before", localization); }
@@ -17941,12 +18165,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17941
18165
  * Represents the component for selecting columns in the TreeList. To enable the user to show or hide columns,
17942
18166
  * add the component inside a [`ToolbarTemplate`]({% slug api_treelist_toolbartemplatedirective %}) directive.
17943
18167
  *
17944
- * {% meta height:500 %}
17945
- * {% embed_file column-menu/chooser-toolbar/app.component.ts preview %}
17946
- * {% embed_file column-menu/chooser-toolbar/app.module.ts %}
17947
- * {% embed_file shared/main.ts %}
17948
- * {% embed_file shared/employees.ts %}
17949
- * {% endmeta %}
18168
+ * @example
18169
+ * ```html
18170
+ * <kendo-treelist ...>
18171
+ * <ng-template kendoTreeListToolbarTemplate>
18172
+ * <kendo-treelist-column-chooser> </kendo-treelist-column-chooser>
18173
+ * </ng-template>
18174
+ * </kendo-treelist>
18175
+ * ```
17950
18176
  */
17951
18177
  class ColumnChooserComponent {
17952
18178
  constructor(localization, columnInfoService, popupService, ngZone, renderer, changeDetector) {
@@ -17958,10 +18184,12 @@ class ColumnChooserComponent {
17958
18184
  this.changeDetector = changeDetector;
17959
18185
  /**
17960
18186
  * Specifies if the changes in the visibility of the column will be immediately applied.
18187
+ * @default false
17961
18188
  */
17962
18189
  this.autoSync = false;
17963
18190
  /**
17964
18191
  * Specifies if all columns can be hidden.
18192
+ * @default true
17965
18193
  */
17966
18194
  this.allowHideAll = true;
17967
18195
  this.columnsIcon = columnsIcon;
@@ -18052,7 +18280,7 @@ ColumnChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
18052
18280
  (columnChange)="onChange($event)">
18053
18281
  </kendo-treelist-columnlist>
18054
18282
  </ng-template>
18055
- `, isInline: true, components: [{ type: i4$2.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: ColumnListComponent, selector: "kendo-treelist-columnlist", inputs: ["columns", "autoSync", "allowHideAll", "applyText", "resetText", "actionsClass"], outputs: ["reset", "apply", "columnChange"] }] });
18283
+ `, isInline: true, components: [{ type: i4$1.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: ColumnListComponent, selector: "kendo-treelist-columnlist", inputs: ["columns", "autoSync", "allowHideAll", "applyText", "resetText", "actionsClass"], outputs: ["reset", "apply", "columnChange"] }] });
18056
18284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnChooserComponent, decorators: [{
18057
18285
  type: Component,
18058
18286
  args: [{
@@ -18192,30 +18420,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18192
18420
 
18193
18421
  /**
18194
18422
  * Represents the command columns of the TreeList. You have to define the content of the
18195
- * column inside an `<ng-template>` tag. The template context is set to the current
18196
- * data item. For more information and examples on using the passed fields
18423
+ * column inside an `<ng-template>` tag. For more information and examples on using the passed fields
18197
18424
  * and the command directives, refer to the article on
18198
18425
  * [editing the TreeList in Angular Reactive Forms]({% slug editing_reactive_forms_treelist %}).
18199
18426
  *
18200
- * The following additional fields are passed:
18201
- * - `columnIndex`&mdash;The current column index.
18202
- * - `rowIndex`&mdash;The current data row index. If inside a new item row, `rowIndex`is `-1`.
18203
- * - `dataItem`&mdash;The current data item.
18204
- * - `column`&mdash;The current column instance.
18205
- * - `isNew`&mdash;The state of the current item.
18206
- *
18207
18427
  * Usually, the template contains CRUD command directives such as:
18208
18428
  * - [`EditCommandDirective`]({% slug api_treelist_editcommanddirective %})
18209
18429
  * - [`RemoveCommandDirective`]({% slug api_treelist_removecommanddirective %})
18210
18430
  * - [`CancelCommandDirective`]({% slug api_treelist_cancelcommanddirective %})
18211
18431
  * - [`SaveCommandDirective`]({% slug api_treelist_savecommanddirective %})
18212
18432
  *
18213
- * {% meta height:590 %}
18214
- * {% embed_file editing/editing-directives/reactive-editing/app.component.ts preview %}
18215
- * {% embed_file shared/employees.ts %}
18216
- * {% embed_file editing/editing-directives/reactive-editing/app.module.ts %}
18217
- * {% embed_file shared/main.ts %}
18218
- * {% endmeta %}
18433
+ * @example
18434
+ * ```html
18435
+ * <kendo-treelist ...>
18436
+ * <kendo-treelist-column field="ProductID"></kendo-treelist-column>
18437
+ * <kendo-treelist-command-column title="command" >
18438
+ * <ng-template kendoTreeListCellTemplate>
18439
+ * <button kendoTreeListEditCommand class="k-primary">Edit</button>
18440
+ * <button kendoTreeListRemoveCommand>Remove</button>
18441
+ * </ng-template>
18442
+ * </kendo-treelist-command-column>
18443
+ * </kendo-treelist>
18444
+ * ```
18219
18445
  */
18220
18446
  class CommandColumnComponent extends ColumnBase {
18221
18447
  constructor(parent, optionChanges) {
@@ -18301,7 +18527,7 @@ BaseCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18301
18527
  </span>
18302
18528
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18303
18529
  <span class="k-button-text"><ng-content></ng-content></span>
18304
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18530
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18305
18531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseCommandDirective, decorators: [{
18306
18532
  type: Component,
18307
18533
  args: [{
@@ -18339,7 +18565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18339
18565
  *
18340
18566
  * @example
18341
18567
  * ```html
18342
- * <kendo-treelist>
18568
+ * <kendo-treelist ...>
18343
18569
  * <kendo-treelist-command-column title="command">
18344
18570
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18345
18571
  * <button [kendoTreeListEditCommand]="cellContext">Edit</button>
@@ -18373,7 +18599,7 @@ EditCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18373
18599
  </span>
18374
18600
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18375
18601
  <span class="k-button-text"><ng-content></ng-content></span>
18376
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18602
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18377
18603
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EditCommandDirective, decorators: [{
18378
18604
  type: Component,
18379
18605
  args: [{
@@ -18411,7 +18637,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18411
18637
  *
18412
18638
  * @example
18413
18639
  * ```html
18414
- * <kendo-treelist>
18640
+ * <kendo-treelist ...>
18415
18641
  * <kendo-treelist-command-column title="command">
18416
18642
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18417
18643
  * <button [kendoTreeListCancelCommand]="cellContext">Cancel changes</button>
@@ -18445,7 +18671,7 @@ CancelCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
18445
18671
  </span>
18446
18672
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18447
18673
  <span class="k-button-text"><ng-content></ng-content></span>
18448
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18674
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18449
18675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CancelCommandDirective, decorators: [{
18450
18676
  type: Component,
18451
18677
  args: [{
@@ -18483,7 +18709,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18483
18709
  *
18484
18710
  * @example
18485
18711
  * ```html
18486
- * <kendo-treelist>
18712
+ * <kendo-treelist ...>
18487
18713
  * <kendo-treelist-command-column title="command">
18488
18714
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18489
18715
  * <button [kendoTreeListSaveCommand]="cellContext">Save changes</button>
@@ -18516,7 +18742,7 @@ SaveCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18516
18742
  </span>
18517
18743
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18518
18744
  <span class="k-button-text"><ng-content></ng-content></span>
18519
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18745
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18520
18746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SaveCommandDirective, decorators: [{
18521
18747
  type: Component,
18522
18748
  args: [{
@@ -18554,7 +18780,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18554
18780
  *
18555
18781
  * @example
18556
18782
  * ```html
18557
- * <kendo-treelist>
18783
+ * <kendo-treelist ...>
18558
18784
  * <kendo-treelist-command-column title="command">
18559
18785
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18560
18786
  * <button [kendoTreeListRemoveCommand]="cellContext">Remove row</button>
@@ -18587,7 +18813,7 @@ RemoveCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
18587
18813
  </span>
18588
18814
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18589
18815
  <span class="k-button-text"><ng-content></ng-content></span>
18590
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18816
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18591
18817
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveCommandDirective, decorators: [{
18592
18818
  type: Component,
18593
18819
  args: [{
@@ -18628,7 +18854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18628
18854
  *
18629
18855
  * @example
18630
18856
  * ```html
18631
- * <kendo-treelist>
18857
+ * <kendo-treelist ...>
18632
18858
  * <kendo-treelist-command-column title="command">
18633
18859
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18634
18860
  * <button [kendoTreeListAddCommand]="cellContext" class="k-primary">Edit</button>
@@ -18659,7 +18885,7 @@ AddCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
18659
18885
  </span>
18660
18886
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18661
18887
  <span class="k-button-text"><ng-content></ng-content></span>
18662
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18888
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18663
18889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AddCommandDirective, decorators: [{
18664
18890
  type: Component,
18665
18891
  args: [{
@@ -19158,8 +19384,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19158
19384
  }] } });
19159
19385
 
19160
19386
  class BaseBindingDirective {
19161
- constructor(component) {
19387
+ constructor(component, rowReorderService) {
19162
19388
  this.component = component;
19389
+ this.rowReorderService = rowReorderService;
19163
19390
  this.state = {};
19164
19391
  this.cache = new Map();
19165
19392
  this.originalData = [];
@@ -19192,6 +19419,8 @@ class BaseBindingDirective {
19192
19419
  this.applyState(this.state);
19193
19420
  this.subscriptions.add(this.component.dataStateChange
19194
19421
  .subscribe(this.onStateChange.bind(this)));
19422
+ this.component.rowReorderable && this.subscriptions.add(this.rowReorderService.rowReorder
19423
+ .subscribe(this.onRowReorder.bind(this)));
19195
19424
  }
19196
19425
  /**
19197
19426
  * @hidden
@@ -19232,6 +19461,7 @@ class BaseBindingDirective {
19232
19461
  this.cache.clear();
19233
19462
  this.component.data = this.fetchChildren();
19234
19463
  }
19464
+ onRowReorder(_event) { }
19235
19465
  applyState({ sort, filter }) {
19236
19466
  this.sort = sort;
19237
19467
  this.filter = filter;
@@ -19300,12 +19530,12 @@ class BaseBindingDirective {
19300
19530
  this.dataChanged = true;
19301
19531
  }
19302
19532
  }
19303
- BaseBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseBindingDirective, deps: [{ token: DataBoundTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });
19533
+ BaseBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseBindingDirective, deps: [{ token: DataBoundTreeComponent }, { token: RowReorderService }], target: i0.ɵɵFactoryTarget.Directive });
19304
19534
  BaseBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: BaseBindingDirective, inputs: { sort: "sort", filter: "filter", aggregate: "aggregate" }, usesOnChanges: true, ngImport: i0 });
19305
19535
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseBindingDirective, decorators: [{
19306
19536
  type: Directive,
19307
19537
  args: [{}]
19308
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { sort: [{
19538
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService }]; }, propDecorators: { sort: [{
19309
19539
  type: Input
19310
19540
  }], filter: [{
19311
19541
  type: Input
@@ -19355,6 +19585,53 @@ class HierarchyEditService extends LocalEditService {
19355
19585
  }
19356
19586
  }
19357
19587
 
19588
+ /**
19589
+ * @hidden
19590
+ */
19591
+ class HierarchicalRowReorderService extends RowReorderService {
19592
+ isOverChild(targetItem) {
19593
+ const { draggedRows } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
19594
+ const draggedItem = draggedRows[0].dataItem;
19595
+ const hasChildren = isPresent(draggedItem[this.childrenField]) && draggedItem[this.childrenField].length > 0;
19596
+ if (!hasChildren) {
19597
+ return false;
19598
+ }
19599
+ if (targetItem && draggedItem.hasOwnProperty(this.childrenField)) {
19600
+ if (draggedItem[this.childrenField].includes(targetItem)) {
19601
+ return true;
19602
+ }
19603
+ const parent = findParent$1(this.data, targetItem, this.childrenField);
19604
+ if (parent) {
19605
+ return this.isOverChild(parent);
19606
+ }
19607
+ }
19608
+ return false;
19609
+ }
19610
+ reorderRows(ev, collection, field) {
19611
+ const draggedItem = ev.draggedRows[0].dataItem;
19612
+ const dropTargetItem = ev.dropTargetRow.dataItem;
19613
+ const draggedItemParent = findParent$1(collection, draggedItem, field);
19614
+ const dropTargetParent = findParent$1(collection, dropTargetItem, field);
19615
+ const draggedItemIdx = draggedItemParent ? draggedItemParent[field].indexOf(draggedItem) : collection.indexOf(draggedItem);
19616
+ let dropTargetItemIdx = dropTargetParent ? dropTargetParent[field].indexOf(dropTargetItem) : collection.indexOf(dropTargetItem);
19617
+ if (ev.dropPosition === dropPosition.after && dropTargetItemIdx < draggedItemIdx) {
19618
+ dropTargetItemIdx++;
19619
+ }
19620
+ draggedItemParent ? draggedItemParent[field].splice(draggedItemIdx, 1) : collection.splice(draggedItemIdx, 1);
19621
+ if (ev.dropPosition !== dropPosition.over) {
19622
+ dropTargetParent ? dropTargetParent[field].splice(dropTargetItemIdx, 0, draggedItem) : collection.splice(dropTargetItemIdx, 0, draggedItem);
19623
+ }
19624
+ else {
19625
+ dropTargetItem[field].unshift(draggedItem);
19626
+ }
19627
+ }
19628
+ }
19629
+ HierarchicalRowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19630
+ HierarchicalRowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService });
19631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService, decorators: [{
19632
+ type: Injectable
19633
+ }] });
19634
+
19358
19635
  /**
19359
19636
  * A directive which binds the TreeList to a tree of objects.
19360
19637
  *
@@ -19363,12 +19640,16 @@ class HierarchyEditService extends LocalEditService {
19363
19640
  * and [filtering]({% slug filtering_treelist %}) ([more information and examples](slug:databinding_treelist#toc-binding-to-hierarchical-data)).
19364
19641
  */
19365
19642
  class HierarchyBindingDirective extends BaseBindingDirective {
19366
- constructor(component) {
19643
+ constructor(component, rowReorderService) {
19367
19644
  super(component);
19368
19645
  this.component = component;
19646
+ this.rowReorderService = rowReorderService;
19369
19647
  this.childrenGetter = getter('items');
19370
19648
  this.childrenSetter = setter('items');
19371
19649
  component.localEditService = new HierarchyEditService(this);
19650
+ if (this.rowReorderService) {
19651
+ this.rowReorderService.bindingDirective = this;
19652
+ }
19372
19653
  }
19373
19654
  /**
19374
19655
  * The name of the field which holds the child data items of the node.
@@ -19376,23 +19657,56 @@ class HierarchyBindingDirective extends BaseBindingDirective {
19376
19657
  set childrenField(value) {
19377
19658
  this.childrenGetter = getter(value);
19378
19659
  this.childrenSetter = setter(value);
19660
+ this._childrenField = value;
19661
+ }
19662
+ get childrenField() {
19663
+ return this._childrenField;
19379
19664
  }
19665
+ /**
19666
+ * @hidden
19667
+ */
19380
19668
  getChildren(item) {
19381
19669
  return item ? this.childrenGetter(item) || [] : this.originalData;
19382
19670
  }
19383
19671
  itemKey(item) {
19384
19672
  return item;
19385
19673
  }
19674
+ onRowReorder(ev) {
19675
+ if (ev.dropPosition === 'forbidden') {
19676
+ return;
19677
+ }
19678
+ const dropTargetItem = ev.dropTargetRow.dataItem;
19679
+ if (ev.dropPosition === 'over') {
19680
+ if (!dropTargetItem.hasOwnProperty(this.childrenField)) {
19681
+ dropTargetItem[this.childrenField] = [];
19682
+ }
19683
+ }
19684
+ this.rowReorderService.reorderRows(ev, this.originalData, this.childrenField);
19685
+ this.rebind();
19686
+ }
19386
19687
  }
19387
- HierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: DataBoundTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });
19388
- HierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: HierarchyBindingDirective, selector: "[kendoTreeListHierarchyBinding]", inputs: { childrenField: "childrenField", data: ["kendoTreeListHierarchyBinding", "data"] }, exportAs: ["kendoTreeListHierarchyBinding"], usesInheritance: true, ngImport: i0 });
19688
+ HierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: DataBoundTreeComponent }, { token: RowReorderService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
19689
+ HierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: HierarchyBindingDirective, selector: "[kendoTreeListHierarchyBinding]", inputs: { childrenField: "childrenField", data: ["kendoTreeListHierarchyBinding", "data"] }, providers: [
19690
+ {
19691
+ provide: RowReorderService,
19692
+ useClass: HierarchicalRowReorderService
19693
+ }
19694
+ ], exportAs: ["kendoTreeListHierarchyBinding"], usesInheritance: true, ngImport: i0 });
19389
19695
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchyBindingDirective, decorators: [{
19390
19696
  type: Directive,
19391
19697
  args: [{
19392
19698
  exportAs: 'kendoTreeListHierarchyBinding',
19393
- selector: '[kendoTreeListHierarchyBinding]'
19699
+ selector: '[kendoTreeListHierarchyBinding]',
19700
+ providers: [
19701
+ {
19702
+ provide: RowReorderService,
19703
+ useClass: HierarchicalRowReorderService
19704
+ }
19705
+ ]
19394
19706
  }]
19395
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { childrenField: [{
19707
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService, decorators: [{
19708
+ type: Optional
19709
+ }] }]; }, propDecorators: { childrenField: [{
19396
19710
  type: Input
19397
19711
  }], data: [{
19398
19712
  type: Input,
@@ -19443,6 +19757,47 @@ class FlatEditService extends LocalEditService {
19443
19757
  }
19444
19758
  }
19445
19759
 
19760
+ /**
19761
+ * @hidden
19762
+ */
19763
+ class FlatRowReorderService extends RowReorderService {
19764
+ isOverChild(targetItem) {
19765
+ const { draggedRows } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
19766
+ const draggedItem = draggedRows[0].dataItem;
19767
+ const hasParent = isPresent(targetItem[this.parentIdField]);
19768
+ const sameParents = draggedItem[this.parentIdField] === targetItem[this.parentIdField];
19769
+ if (!hasParent || sameParents) {
19770
+ return false;
19771
+ }
19772
+ if (targetItem && targetItem.hasOwnProperty(this.parentIdField)) {
19773
+ if (draggedItem[this.idField] === targetItem[this.parentIdField]) {
19774
+ return true;
19775
+ }
19776
+ const parent = this.data.find(i => i[this.idField] === targetItem[this.parentIdField]);
19777
+ if (parent) {
19778
+ return this.isOverChild(parent);
19779
+ }
19780
+ }
19781
+ }
19782
+ reorderRows(ev, collection) {
19783
+ const { draggedRows, dropTargetRow } = ev;
19784
+ const draggedDataItem = draggedRows[0].dataItem;
19785
+ const dropTargetDataItem = dropTargetRow.dataItem;
19786
+ let dropTargetIdx = collection.indexOf(dropTargetDataItem);
19787
+ const draggedItemIdx = collection.indexOf(draggedDataItem);
19788
+ collection.splice(draggedItemIdx, 1);
19789
+ if (ev.dropPosition === 'after' && dropTargetIdx < draggedItemIdx) {
19790
+ dropTargetIdx++;
19791
+ }
19792
+ collection.splice(dropTargetIdx, 0, draggedDataItem);
19793
+ }
19794
+ }
19795
+ FlatRowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19796
+ FlatRowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService });
19797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService, decorators: [{
19798
+ type: Injectable
19799
+ }] });
19800
+
19446
19801
  const ROOT_ID = null;
19447
19802
  /**
19448
19803
  * A directive which binds the TreeList to an array of objects by using
@@ -19453,14 +19808,18 @@ const ROOT_ID = null;
19453
19808
  * and [filtering]({% slug filtering_treelist %}) ([more information and examples]({% slug databinding_treelist %})).
19454
19809
  */
19455
19810
  class FlatBindingDirective extends BaseBindingDirective {
19456
- constructor(component) {
19811
+ constructor(component, rowReorderService) {
19457
19812
  super(component);
19458
19813
  this.component = component;
19814
+ this.rowReorderService = rowReorderService;
19459
19815
  this.idGetter = getter('id');
19460
19816
  this.idSetter = setter('id');
19461
19817
  this.parentIdGetter = getter('parentId');
19462
19818
  this.parentIdSetter = setter('parentId');
19463
19819
  component.localEditService = new FlatEditService(this);
19820
+ if (this.rowReorderService) {
19821
+ this.rowReorderService.bindingDirective = this;
19822
+ }
19464
19823
  }
19465
19824
  /**
19466
19825
  * The name of the field which contains the identifier of the parent node.
@@ -19468,6 +19827,10 @@ class FlatBindingDirective extends BaseBindingDirective {
19468
19827
  set parentIdField(value) {
19469
19828
  this.parentIdGetter = getter(value);
19470
19829
  this.parentIdSetter = setter(value);
19830
+ this._parentIdField = value;
19831
+ }
19832
+ get parentIdField() {
19833
+ return this._parentIdField;
19471
19834
  }
19472
19835
  /**
19473
19836
  * The name of the field which contains the unique identifier of the node.
@@ -19475,7 +19838,14 @@ class FlatBindingDirective extends BaseBindingDirective {
19475
19838
  set idField(value) {
19476
19839
  this.idGetter = getter(value);
19477
19840
  this.idSetter = setter(value);
19841
+ this._idField = value;
19842
+ }
19843
+ get idField() {
19844
+ return this._idField;
19478
19845
  }
19846
+ /**
19847
+ * @hidden
19848
+ */
19479
19849
  getChildren(item) {
19480
19850
  const id = this.itemKey(item);
19481
19851
  const children = id === ROOT_ID ?
@@ -19486,16 +19856,48 @@ class FlatBindingDirective extends BaseBindingDirective {
19486
19856
  itemKey(item) {
19487
19857
  return item ? this.idGetter(item) : ROOT_ID;
19488
19858
  }
19859
+ onRowReorder(ev) {
19860
+ if (ev.dropPosition === 'forbidden') {
19861
+ return;
19862
+ }
19863
+ const draggedItem = ev.draggedRows[0].dataItem;
19864
+ const dropTargetItem = ev.dropTargetRow.dataItem;
19865
+ if (ev.dropPosition === 'over') {
19866
+ const dropItemId = this.itemKey(dropTargetItem);
19867
+ if (draggedItem[this.parentIdField] !== dropItemId) {
19868
+ draggedItem[this.parentIdField] = dropItemId;
19869
+ }
19870
+ }
19871
+ else {
19872
+ const dropItemParentId = dropTargetItem[this.parentIdField];
19873
+ draggedItem[this.parentIdField] = dropItemParentId;
19874
+ this.rowReorderService.reorderRows(ev, this.originalData);
19875
+ }
19876
+ this.rebind();
19877
+ }
19489
19878
  }
19490
- FlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatBindingDirective, deps: [{ token: DataBoundTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });
19491
- FlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: FlatBindingDirective, selector: "[kendoTreeListFlatBinding]", inputs: { parentIdField: "parentIdField", idField: "idField", data: ["kendoTreeListFlatBinding", "data"] }, exportAs: ["kendoTreeListFlatBinding"], usesInheritance: true, ngImport: i0 });
19879
+ FlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatBindingDirective, deps: [{ token: DataBoundTreeComponent }, { token: RowReorderService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
19880
+ FlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: FlatBindingDirective, selector: "[kendoTreeListFlatBinding]", inputs: { parentIdField: "parentIdField", idField: "idField", data: ["kendoTreeListFlatBinding", "data"] }, providers: [
19881
+ {
19882
+ provide: RowReorderService,
19883
+ useClass: FlatRowReorderService
19884
+ }
19885
+ ], exportAs: ["kendoTreeListFlatBinding"], usesInheritance: true, ngImport: i0 });
19492
19886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatBindingDirective, decorators: [{
19493
19887
  type: Directive,
19494
19888
  args: [{
19495
19889
  exportAs: 'kendoTreeListFlatBinding',
19496
- selector: '[kendoTreeListFlatBinding]'
19890
+ selector: '[kendoTreeListFlatBinding]',
19891
+ providers: [
19892
+ {
19893
+ provide: RowReorderService,
19894
+ useClass: FlatRowReorderService
19895
+ }
19896
+ ]
19497
19897
  }]
19498
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { parentIdField: [{
19898
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService, decorators: [{
19899
+ type: Optional
19900
+ }] }]; }, propDecorators: { parentIdField: [{
19499
19901
  type: Input
19500
19902
  }], idField: [{
19501
19903
  type: Input
@@ -19786,7 +20188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19786
20188
  * Represents the Kendo UI TreeListSpacer component for Angular.
19787
20189
  * Used to give additional white space between the Pager inner elements,
19788
20190
  * and provides a way for customizing the spacer width.
19789
- * It can also be used in any flex container within the TreeList.
20191
+ * It can also be used in any flex container within the TreeList. [See example](slug:toolbartemplate_treelist#toc-define-spacing-between-the-toolbar-elements).
19790
20192
  */
19791
20193
  class TreeListSpacerComponent {
19792
20194
  constructor() {
@@ -19907,7 +20309,8 @@ TreeListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
19907
20309
  RowFilterModule,
19908
20310
  FilterMenuModule,
19909
20311
  ResizeSensorModule,
19910
- ColumnMenuModule], exports: [TreeListComponent,
20312
+ ColumnMenuModule,
20313
+ DragAndDropModule$1], exports: [TreeListComponent,
19911
20314
  ToolbarTemplateDirective,
19912
20315
  ToolbarComponent,
19913
20316
  TreeListSpacerComponent,
@@ -19919,7 +20322,7 @@ TreeListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
19919
20322
  FlatBindingDirective,
19920
20323
  ExpandableDirective,
19921
20324
  SelectableDirective,
19922
- TreeListToolbarFocusableDirective, ColumnComponent, SpanColumnComponent, CheckboxColumnComponent, ColumnGroupComponent, FocusableDirective, CommandColumnComponent, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, FooterTemplateDirective, HeaderTemplateDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, 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, 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, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuComponent] });
20325
+ TreeListToolbarFocusableDirective, ColumnComponent, SpanColumnComponent, CheckboxColumnComponent, RowReorderColumnComponent, ColumnGroupComponent, FocusableDirective, CommandColumnComponent, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, FooterTemplateDirective, HeaderTemplateDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, 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, 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, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuComponent] });
19923
20326
  TreeListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListModule, imports: [[
19924
20327
  CommonModule,
19925
20328
  SharedModule,
@@ -19929,7 +20332,8 @@ TreeListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
19929
20332
  RowFilterModule,
19930
20333
  FilterMenuModule,
19931
20334
  ResizeSensorModule,
19932
- ColumnMenuModule
20335
+ ColumnMenuModule,
20336
+ DragAndDropModule$1
19933
20337
  ]] });
19934
20338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListModule, decorators: [{
19935
20339
  type: NgModule,
@@ -19945,11 +20349,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19945
20349
  RowFilterModule,
19946
20350
  FilterMenuModule,
19947
20351
  ResizeSensorModule,
19948
- ColumnMenuModule
20352
+ ColumnMenuModule,
20353
+ DragAndDropModule$1
19949
20354
  ]
19950
20355
  }]
19951
20356
  }] });
19952
20357
 
20358
+ /**
20359
+ * Represents the Kendo UI PDFMargin component for Angular.
20360
+ * The supported units are:
20361
+ * `"mm"`
20362
+ * `"cm"`
20363
+ * `"in"`
20364
+ * `"pt"` (default).
20365
+ * Numbers are considered to be points (`"pt"`).
20366
+ */
19953
20367
  class PDFMarginComponent extends PDFExportMarginComponent {
19954
20368
  }
19955
20369
  PDFMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PDFMarginComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -20377,7 +20791,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20377
20791
  *
20378
20792
  * @example
20379
20793
  * ```html
20380
- * <kendo-treelist>
20794
+ * <kendo-treelist ...>
20381
20795
  * <ng-template kendoTreeListToolbarTemplate>
20382
20796
  * <button kendoTreeListPDFCommand>Export to PDF</button>
20383
20797
  * </ng-template>
@@ -20417,7 +20831,7 @@ PDFCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
20417
20831
  </span>
20418
20832
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
20419
20833
  <span class="k-button-text"><ng-content></ng-content></span>
20420
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
20834
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
20421
20835
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PDFCommandDirective, decorators: [{
20422
20836
  type: Component,
20423
20837
  args: [{
@@ -20718,7 +21132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20718
21132
  *
20719
21133
  * @example
20720
21134
  * ```html
20721
- * <kendo-treelist>
21135
+ * <kendo-treelist ...>
20722
21136
  * <ng-template kendoTreeListToolbarTemplate>
20723
21137
  * <button kendoTreeListExcelCommand>Export to PDF</button>
20724
21138
  * </ng-template>
@@ -20758,7 +21172,7 @@ ExcelCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
20758
21172
  </span>
20759
21173
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
20760
21174
  <span class="k-button-text"><ng-content></ng-content></span>
20761
- `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
21175
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
20762
21176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExcelCommandDirective, decorators: [{
20763
21177
  type: Component,
20764
21178
  args: [{
@@ -20822,5 +21236,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20822
21236
  * Generated bundle index. Do not edit.
20823
21237
  */
20824
21238
 
20825
- export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseCommandDirective, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, CancelCommandDirective, CellCloseEvent, CellComponent, CellTemplateDirective, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuLockComponent, ColumnMenuSortComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, CustomMessagesComponent, DataBoundTreeComponent, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DoesNotContainFilterOperatorComponent, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandEvent, ExpandableDirective, ExpandableTreeComponent, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FlatBindingDirective, FocusableDirective, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, HeaderComponent, HeaderModule, HeaderTemplateDirective, HierarchyBindingDirective, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, LevelItemsPipe, ListComponent, LoadingComponent, LogicalCellDirective, LogicalRowDirective, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, SelectableDirective, SelectionChangeEvent, SharedFilterModule, SharedModule, SinglePopupService, Skip, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, TreeListComponent, TreeListModule, TreeListSpacerComponent, TreeListToolbarFocusableDirective };
21239
+ export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseCommandDirective, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, CancelCommandDirective, CellCloseEvent, CellComponent, CellTemplateDirective, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuLockComponent, ColumnMenuSortComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, CustomMessagesComponent, DataBoundTreeComponent, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DoesNotContainFilterOperatorComponent, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandEvent, ExpandableDirective, ExpandableTreeComponent, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FlatBindingDirective, FocusableDirective, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, HeaderComponent, HeaderModule, HeaderTemplateDirective, HierarchyBindingDirective, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, LevelItemsPipe, ListComponent, LoadingComponent, LogicalCellDirective, LogicalRowDirective, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, SaveCommandDirective, SelectableDirective, SelectionChangeEvent, SharedFilterModule, SharedModule, SinglePopupService, Skip, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, TreeListComponent, TreeListModule, TreeListSpacerComponent, TreeListToolbarFocusableDirective };
20826
21240