@progress/kendo-angular-treelist 13.0.0-develop.2 → 13.0.0-develop.21

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 (196) 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/autocomplete-filter-cell.component.mjs +12 -1
  64. package/esm2020/filtering/cell/boolean-filter-cell.component.mjs +29 -12
  65. package/esm2020/filtering/cell/date-filter-cell.component.mjs +23 -12
  66. package/esm2020/filtering/cell/filter-cell-operators.component.mjs +36 -1
  67. package/esm2020/filtering/cell/filter-cell-wrapper.component.mjs +3 -1
  68. package/esm2020/filtering/cell/numeric-filter-cell.component.mjs +25 -13
  69. package/esm2020/filtering/cell/string-filter-cell.component.mjs +26 -14
  70. package/esm2020/filtering/date-filter.component.mjs +6 -1
  71. package/esm2020/filtering/filter-input.directive.mjs +29 -3
  72. package/esm2020/filtering/menu/boolean-filter-menu.component.mjs +33 -19
  73. package/esm2020/filtering/menu/date-filter-menu-input.component.mjs +1 -1
  74. package/esm2020/filtering/menu/date-filter-menu.component.mjs +12 -12
  75. package/esm2020/filtering/menu/filter-menu.component.mjs +1 -1
  76. package/esm2020/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
  77. package/esm2020/filtering/menu/numeric-filter-menu.component.mjs +12 -12
  78. package/esm2020/filtering/menu/string-filter-menu-input.component.mjs +19 -8
  79. package/esm2020/filtering/menu/string-filter-menu.component.mjs +15 -0
  80. package/esm2020/filtering/numeric-filter.component.mjs +4 -1
  81. package/esm2020/filtering/operators/after-eq-filter-operator.component.mjs +2 -5
  82. package/esm2020/filtering/operators/after-filter-operator.component.mjs +2 -5
  83. package/esm2020/filtering/operators/before-eq-filter-operator.component.mjs +2 -5
  84. package/esm2020/filtering/operators/before-filter-operator.component.mjs +3 -6
  85. package/esm2020/filtering/operators/contains-filter-operator.component.mjs +1 -4
  86. package/esm2020/filtering/operators/ends-with-filter-operator.component.mjs +1 -4
  87. package/esm2020/filtering/operators/eq-filter-operator.component.mjs +1 -4
  88. package/esm2020/filtering/operators/gt-filter-operator.component.mjs +1 -4
  89. package/esm2020/filtering/operators/gte-filter-operator.component.mjs +1 -4
  90. package/esm2020/filtering/operators/is-empty-filter-operator.component.mjs +1 -4
  91. package/esm2020/filtering/operators/is-not-empty-filter-operator.component.mjs +1 -4
  92. package/esm2020/filtering/operators/is-not-null-filter-operator.component.mjs +1 -4
  93. package/esm2020/filtering/operators/isnull-filter-operator.component.mjs +1 -4
  94. package/esm2020/filtering/operators/lt-filter-operator.component.mjs +2 -5
  95. package/esm2020/filtering/operators/lte-filter-operator.component.mjs +1 -4
  96. package/esm2020/filtering/operators/neq-filter-operator.component.mjs +1 -4
  97. package/esm2020/filtering/operators/not-contains-filter-operator.component.mjs +1 -4
  98. package/esm2020/filtering/operators/starts-with-filter-operator.component.mjs +1 -4
  99. package/esm2020/filtering/string-filter.component.mjs +2 -1
  100. package/esm2020/index.mjs +2 -0
  101. package/esm2020/localization/custom-messages.component.mjs +1 -1
  102. package/esm2020/localization/messages.mjs +13 -1
  103. package/esm2020/package-metadata.mjs +2 -2
  104. package/esm2020/pager/pager-element.component.mjs +17 -0
  105. package/esm2020/pager/pager-next-buttons.component.mjs +8 -11
  106. package/esm2020/pager/pager-numeric-buttons.component.mjs +1 -1
  107. package/esm2020/pager/pager-page-sizes.component.mjs +1 -1
  108. package/esm2020/pager/pager-prev-buttons.component.mjs +8 -11
  109. package/esm2020/pager/pager-template.directive.mjs +1 -1
  110. package/esm2020/pdf/pdf-command.directive.mjs +2 -2
  111. package/esm2020/pdf/pdf-margin.component.mjs +9 -0
  112. package/esm2020/rendering/cell-template.directive.mjs +1 -1
  113. package/esm2020/rendering/cell.component.mjs +73 -20
  114. package/esm2020/rendering/common/spacer.component.mjs +1 -1
  115. package/esm2020/rendering/constants.mjs +4 -0
  116. package/esm2020/rendering/header/header.component.mjs +6 -1
  117. package/esm2020/rendering/list.component.mjs +20 -18
  118. package/esm2020/rendering/table-body.component.mjs +5 -3
  119. package/esm2020/row-reordering/flat-reorder.service.mjs +48 -0
  120. package/esm2020/row-reordering/hierarchical-reorder.service.mjs +55 -0
  121. package/esm2020/row-reordering/row-reorder.service.mjs +220 -0
  122. package/esm2020/row-reordering/types.mjs +5 -0
  123. package/esm2020/row-reordering/utils.mjs +129 -0
  124. package/esm2020/shared.module.mjs +8 -3
  125. package/esm2020/treelist.component.mjs +229 -321
  126. package/esm2020/treelist.module.mjs +71 -66
  127. package/excel/excel-command.directive.d.ts +1 -1
  128. package/excel/excel-export-data.interface.d.ts +1 -1
  129. package/excel/excel.component.d.ts +9 -8
  130. package/fesm2015/progress-kendo-angular-treelist.mjs +1434 -832
  131. package/fesm2020/progress-kendo-angular-treelist.mjs +1426 -833
  132. package/filtering/cell/autocomplete-filter-cell.component.d.ts +4 -0
  133. package/filtering/cell/boolean-filter-cell.component.d.ts +19 -11
  134. package/filtering/cell/date-filter-cell.component.d.ts +15 -11
  135. package/filtering/cell/filter-cell-operators.component.d.ts +29 -1
  136. package/filtering/cell/numeric-filter-cell.component.d.ts +17 -12
  137. package/filtering/cell/string-filter-cell.component.d.ts +16 -11
  138. package/filtering/date-filter.component.d.ts +7 -11
  139. package/filtering/filter-input.directive.d.ts +7 -1
  140. package/filtering/menu/boolean-filter-menu.component.d.ts +19 -13
  141. package/filtering/menu/date-filter-menu.component.d.ts +12 -12
  142. package/filtering/menu/numeric-filter-menu.component.d.ts +12 -12
  143. package/filtering/menu/string-filter-menu-input.component.d.ts +4 -0
  144. package/filtering/menu/string-filter-menu.component.d.ts +15 -0
  145. package/filtering/numeric-filter.component.d.ts +4 -1
  146. package/filtering/operators/after-eq-filter-operator.component.d.ts +4 -0
  147. package/filtering/operators/after-filter-operator.component.d.ts +4 -0
  148. package/filtering/operators/before-eq-filter-operator.component.d.ts +4 -0
  149. package/filtering/operators/before-filter-operator.component.d.ts +4 -0
  150. package/filtering/operators/contains-filter-operator.component.d.ts +1 -4
  151. package/filtering/operators/ends-with-filter-operator.component.d.ts +1 -4
  152. package/filtering/operators/eq-filter-operator.component.d.ts +1 -4
  153. package/filtering/operators/gte-filter-operator.component.d.ts +1 -4
  154. package/filtering/operators/is-empty-filter-operator.component.d.ts +1 -4
  155. package/filtering/operators/is-not-empty-filter-operator.component.d.ts +1 -4
  156. package/filtering/operators/is-not-null-filter-operator.component.d.ts +1 -4
  157. package/filtering/operators/isnull-filter-operator.component.d.ts +1 -4
  158. package/filtering/operators/lt-filter-operator.component.d.ts +4 -0
  159. package/filtering/operators/neq-filter-operator.component.d.ts +1 -4
  160. package/filtering/operators/not-contains-filter-operator.component.d.ts +1 -4
  161. package/filtering/operators/starts-with-filter-operator.component.d.ts +1 -4
  162. package/filtering/string-filter.component.d.ts +2 -1
  163. package/index.d.ts +2 -0
  164. package/localization/custom-messages.component.d.ts +1 -1
  165. package/localization/messages.d.ts +42 -2
  166. package/navigation/navigation-cell.interface.d.ts +1 -4
  167. package/navigation/navigation-row.interface.d.ts +1 -4
  168. package/package.json +16 -15
  169. package/pager/pager-element.component.d.ts +9 -0
  170. package/pager/pager-next-buttons.component.d.ts +0 -3
  171. package/pager/pager-numeric-buttons.component.d.ts +1 -1
  172. package/pager/pager-prev-buttons.component.d.ts +0 -3
  173. package/pager/pager-settings.d.ts +1 -15
  174. package/pager/pager-template.directive.d.ts +1 -1
  175. package/pdf/pdf-command.directive.d.ts +1 -1
  176. package/pdf/pdf-margin.component.d.ts +9 -0
  177. package/rendering/cell-template.directive.d.ts +1 -1
  178. package/rendering/cell.component.d.ts +10 -1
  179. package/rendering/common/spacer.component.d.ts +1 -1
  180. package/rendering/constants.d.ts +4 -0
  181. package/rendering/header/header.component.d.ts +1 -0
  182. package/row-reordering/flat-reorder.service.d.ts +16 -0
  183. package/row-reordering/hierarchical-reorder.service.d.ts +16 -0
  184. package/row-reordering/row-reorder.service.d.ts +61 -0
  185. package/row-reordering/types.d.ts +39 -0
  186. package/row-reordering/utils.d.ts +85 -0
  187. package/schematics/ngAdd/index.js +3 -3
  188. package/scrolling/content-scroll-event.d.ts +1 -1
  189. package/scrolling/scroll-bottom-event.d.ts +1 -1
  190. package/scrolling/scroll-request.service.d.ts +6 -0
  191. package/selection/selectable-settings.d.ts +5 -15
  192. package/selection/selectable.directive.d.ts +1 -1
  193. package/selection/selection-change-event.d.ts +1 -1
  194. package/shared.module.d.ts +5 -4
  195. package/treelist.component.d.ts +66 -289
  196. package/treelist.module.d.ts +68 -66
@@ -3,16 +3,16 @@
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
- import * as i3$2 from '@angular/forms';
9
+ import * as i4$1 from '@angular/forms';
10
10
  import { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
11
11
  import { merge, of, fromEvent, isObservable, BehaviorSubject, Subscription, Subject, zip as zip$1, from, interval, Observable } from 'rxjs';
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, KendoInput, 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,11 +21,13 @@ 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 i3$2 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';
@@ -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: 1684846780,
50
- version: '13.0.0-develop.2',
51
+ publishDate: 1685973039,
52
+ version: '13.0.0-develop.21',
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
  }
@@ -5763,6 +6041,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5763
6041
  */
5764
6042
  class FilterInputDirective {
5765
6043
  constructor(valueAccessors, ngZone, element, renderer) {
6044
+ this.element = element;
6045
+ this.renderer = renderer;
5766
6046
  this.change = new EventEmitter();
5767
6047
  this.composing = false;
5768
6048
  this.filterDelay = 500;
@@ -5784,6 +6064,7 @@ class FilterInputDirective {
5784
6064
  this.accessor.setDisabledState(value);
5785
6065
  }
5786
6066
  ngAfterViewInit() {
6067
+ this.addAriaAttributes();
5787
6068
  this.accessor.registerOnChange(x => this.filterDelay > 0 ?
5788
6069
  this.changeRequests.next(x) :
5789
6070
  this.change.emit(x));
@@ -5809,9 +6090,24 @@ class FilterInputDirective {
5809
6090
  this.changeRequestsSubscription.unsubscribe();
5810
6091
  }
5811
6092
  }
6093
+ addAriaAttributes() {
6094
+ const ariaValue = this.columnLabel;
6095
+ if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {
6096
+ const focusableElement = this.element.nativeElement.querySelector(`#${this.kendoInput.focusableId}`) ||
6097
+ this.element.nativeElement;
6098
+ this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);
6099
+ }
6100
+ else {
6101
+ const inputElement = this.element.nativeElement.querySelector('.k-input-inner');
6102
+ const elementToSetLabel = inputElement ? inputElement : this.element.nativeElement;
6103
+ if (ariaValue) {
6104
+ this.renderer.setAttribute(elementToSetLabel, 'aria-label', ariaValue);
6105
+ }
6106
+ }
6107
+ }
5812
6108
  }
5813
6109
  FilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterInputDirective, deps: [{ token: NG_VALUE_ACCESSOR, self: true }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
5814
- FilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: { filterDelay: "filterDelay", value: "value" }, usesOnChanges: true, ngImport: i0 });
6110
+ FilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: { filterDelay: "filterDelay", columnLabel: "columnLabel", column: "column", value: "value" }, queries: [{ propertyName: "kendoInput", first: true, predicate: KendoInput, descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });
5815
6111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterInputDirective, decorators: [{
5816
6112
  type: Directive,
5817
6113
  args: [{
@@ -5822,7 +6118,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5822
6118
  }, {
5823
6119
  type: Inject,
5824
6120
  args: [NG_VALUE_ACCESSOR]
5825
- }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { filterDelay: [{
6121
+ }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { kendoInput: [{
6122
+ type: ContentChild,
6123
+ args: [KendoInput, { static: true }]
6124
+ }], filterDelay: [{
6125
+ type: Input
6126
+ }], columnLabel: [{
6127
+ type: Input
6128
+ }], column: [{
5826
6129
  type: Input
5827
6130
  }], value: [{
5828
6131
  type: Input
@@ -6018,11 +6321,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6018
6321
  * @hidden
6019
6322
  */
6020
6323
  class StringFilterMenuInputComponent {
6021
- constructor() {
6324
+ constructor(localization) {
6325
+ this.localization = localization;
6022
6326
  this.operators = [];
6023
6327
  }
6328
+ get columnLabel() {
6329
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
6330
+ const columnName = this.column ? this.column.title || this.column.field : '';
6331
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
6332
+ }
6024
6333
  }
6025
- StringFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterMenuInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6334
+ StringFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterMenuInputComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
6026
6335
  StringFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: StringFilterMenuInputComponent, selector: "kendo-treelist-string-filter-menu-input", inputs: { operators: "operators", column: "column", filter: "filter", operator: "operator", currentFilter: "currentFilter", filterService: "filterService" }, ngImport: i0, template: `
6027
6336
  <kendo-treelist-filter-menu-input-wrapper
6028
6337
  [column]="column"
@@ -6035,10 +6344,11 @@ StringFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
6035
6344
  <input
6036
6345
  kendoTextBox
6037
6346
  kendoFilterInput
6347
+ [columnLabel]="columnLabel"
6038
6348
  [filterDelay]="0"
6039
6349
  [ngModel]="currentFilter?.value" />
6040
6350
  </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"] }] });
6351
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }], directives: [{ type: i3$2.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i4$1.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", "columnLabel", "column", "value"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
6042
6352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterMenuInputComponent, decorators: [{
6043
6353
  type: Component,
6044
6354
  args: [{
@@ -6055,12 +6365,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6055
6365
  <input
6056
6366
  kendoTextBox
6057
6367
  kendoFilterInput
6368
+ [columnLabel]="columnLabel"
6058
6369
  [filterDelay]="0"
6059
6370
  [ngModel]="currentFilter?.value" />
6060
6371
  </kendo-treelist-filter-menu-input-wrapper>
6061
6372
  `
6062
6373
  }]
6063
- }], propDecorators: { operators: [{
6374
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { operators: [{
6064
6375
  type: Input
6065
6376
  }], column: [{
6066
6377
  type: Input
@@ -6077,6 +6388,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6077
6388
  /**
6078
6389
  * Represents a string-filter menu component.
6079
6390
  * ([see example]({% slug builtinfiltertemplate_treelist %}#toc-configuration-components-for-filter-templates)).
6391
+ *
6392
+ * @example
6393
+ * ```html
6394
+ * <kendo-treelist-column field="name">
6395
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6396
+ * <kendo-treelist-string-filter-menu
6397
+ * [column]="column"
6398
+ * [filter]="filter"
6399
+ * [filterService]="filterService">
6400
+ * </kendo-treelist-string-filter-menu>
6401
+ * </ng-template>
6402
+ * </kendo-treelist-column>
6403
+ * ```
6404
+ *
6080
6405
  */
6081
6406
  class StringFilterMenuComponent extends StringFilterComponent {
6082
6407
  constructor(localization) {
@@ -6089,6 +6414,7 @@ class StringFilterMenuComponent extends StringFilterComponent {
6089
6414
  this.filter = { filters: [], logic: "and" };
6090
6415
  /**
6091
6416
  * Determines if the inputs of second criteria will displayed.
6417
+ * @default true
6092
6418
  */
6093
6419
  this.extra = true;
6094
6420
  }
@@ -6201,18 +6527,21 @@ class NumericFilterComponent extends BaseFilterCellComponent {
6201
6527
  super(filterService);
6202
6528
  this.localization = localization;
6203
6529
  /**
6204
- * The default filter operator. Defaults to `eq`.
6530
+ * The default filter operator.
6205
6531
  * @type {string}
6532
+ * @default 'eq'
6206
6533
  */
6207
6534
  this.operator = "eq";
6208
6535
  /**
6209
6536
  * Specifies the value that is used to increment or decrement the component value.
6210
6537
  * @type {numeric}
6538
+ * @default 1
6211
6539
  */
6212
6540
  this.step = 1;
6213
6541
  /**
6214
6542
  * Specifies whether the **Up** and **Down** spin buttons will be rendered.
6215
6543
  * @type {boolean}
6544
+ * @default true
6216
6545
  */
6217
6546
  this.spinners = true;
6218
6547
  this.defaultOperators = numericOperators(this.localization);
@@ -6336,7 +6665,7 @@ NumericFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
6336
6665
  [step]="step">
6337
6666
  </kendo-numerictextbox>
6338
6667
  </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"] }] });
6668
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }, { type: i3$2.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", "columnLabel", "column", "value"] }] });
6340
6669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericFilterMenuInputComponent, decorators: [{
6341
6670
  type: Component,
6342
6671
  args: [{
@@ -6395,18 +6724,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6395
6724
  * Represents a numeric-filter menu component.
6396
6725
  *
6397
6726
  * @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
- * ```
6727
+ * ```html
6728
+ * <kendo-treelist-column field="UnitPrice">
6729
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
6730
+ * <kendo-treelist-numeric-filter-menu
6731
+ * [column]="column"
6732
+ * [filter]="filter"
6733
+ * [filterService]="filterService">
6734
+ * </kendo-treelist-numeric-filter-menu>
6735
+ * </ng-template>
6736
+ * </kendo-treelist-column>
6737
+ * ```
6410
6738
  */
6411
6739
  class NumericFilterMenuComponent extends NumericFilterComponent {
6412
6740
  constructor(localization) {
@@ -6419,6 +6747,7 @@ class NumericFilterMenuComponent extends NumericFilterComponent {
6419
6747
  this.filter = { filters: [], logic: "and" };
6420
6748
  /**
6421
6749
  * Determines if the inputs of second criteria will displayed.
6750
+ * @default true
6422
6751
  */
6423
6752
  this.extra = true;
6424
6753
  }
@@ -6564,25 +6893,30 @@ class DateFilterComponent extends BaseFilterCellComponent {
6564
6893
  /**
6565
6894
  * The default filter operator. Defaults to `contains`.
6566
6895
  * @type {string}
6896
+ * @default 'gte'
6567
6897
  */
6568
6898
  this.operator = "gte";
6569
6899
  /**
6570
6900
  * Defines the active view that the calendar initially renders.
6571
6901
  * By default, the active view is `month`.
6572
6902
  *
6573
- * > You have to set `activeView` within the `topView`-`bottomView` range.
6903
+ * You have to set `activeView` within the `topView`-`bottomView` range.
6904
+ * @default 'month'
6574
6905
  */
6575
6906
  this.activeView = "month";
6576
6907
  /**
6577
6908
  * Defines the bottommost calendar view, to which the user can navigate.
6909
+ * @default 'month'
6578
6910
  */
6579
6911
  this.bottomView = "month";
6580
6912
  /**
6581
6913
  * Defines the topmost calendar view, to which the user can navigate.
6914
+ * @default 'century'
6582
6915
  */
6583
6916
  this.topView = "century";
6584
6917
  /**
6585
6918
  * Determines whether to display a week number column in the `month` view of the Calendar.
6919
+ * @default false
6586
6920
  */
6587
6921
  this.weekNumber = false;
6588
6922
  this.defaultOperators = dateOperators(this.localization);
@@ -6718,7 +7052,7 @@ DateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
6718
7052
  >
6719
7053
  </kendo-datepicker>
6720
7054
  </kendo-treelist-filter-menu-input-wrapper>
6721
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }, { 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: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
7055
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-treelist-filter-menu-input-wrapper", inputs: ["filterService", "currentFilter"] }, { 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: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "column", "value"] }] });
6722
7056
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{
6723
7057
  type: Component,
6724
7058
  args: [{
@@ -6788,18 +7122,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6788
7122
  * Represents a date-filter menu component.
6789
7123
  *
6790
7124
  * @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
- * ```
7125
+ * ```html
7126
+ * <kendo-treelist-column field="OrderDate" title="Order Date">
7127
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
7128
+ * <kendo-treelist-date-filter-menu
7129
+ * [column]="column"
7130
+ * [filter]="filter"
7131
+ * [filterService]="filterService">
7132
+ * </kendo-treelist-date-filter-menu>
7133
+ * </ng-template>
7134
+ * </kendo-treelist-column>
7135
+ * ```
6803
7136
  */
6804
7137
  class DateFilterMenuComponent extends DateFilterComponent {
6805
7138
  constructor(localization) {
@@ -6812,6 +7145,7 @@ class DateFilterMenuComponent extends DateFilterComponent {
6812
7145
  this.filter = { filters: [], logic: "and" };
6813
7146
  /**
6814
7147
  * Determines if the inputs of second criteria will be displayed.
7148
+ * @default true
6815
7149
  */
6816
7150
  this.extra = true;
6817
7151
  }
@@ -7025,25 +7359,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7025
7359
  }] } });
7026
7360
 
7027
7361
  /**
7028
- * Represents a Boolean-filter menu component.
7362
+ * Represents a Boolean-filter menu component. [See example](slug:columnmenu_treelist#toc-customizing-the-content).
7029
7363
  *
7030
7364
  * @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>
7365
+ * ```html
7366
+ * <kendo-treelist-column field="Discontinued" title="Discontinued">
7367
+ * <ng-template kendoTreeListFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
7368
+ * <kendo-treelist-boolean-filter-menu
7369
+ * [column]="column"
7370
+ * [filter]="filter"
7371
+ * [filterService]="filterService">
7372
+ * </kendo-treelist-boolean-filter-menu>
7373
+ * </ng-template>
7374
+ * </kendo-treelist-column>
7042
7375
  * ```
7043
7376
  */
7044
7377
  class BooleanFilterMenuComponent extends BooleanFilterComponent {
7045
- constructor(localization) {
7378
+ constructor(renderer, localization) {
7046
7379
  super(null, localization);
7380
+ this.renderer = renderer;
7047
7381
  /**
7048
7382
  * The current menu filter.
7049
7383
  * @type {CompositeFilterDescriptor}
@@ -7079,12 +7413,22 @@ class BooleanFilterMenuComponent extends BooleanFilterComponent {
7079
7413
  isSelected(radioValue) {
7080
7414
  return this.filtersByField(this.column.field).some(({ value }) => value === radioValue);
7081
7415
  }
7416
+ /**
7417
+ * @hidden
7418
+ */
7419
+ columnLabel() {
7420
+ const elem = this.inputElem.nativeElement;
7421
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
7422
+ const columnName = this.column.title || this.column.field;
7423
+ const fullMessage = replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
7424
+ this.renderer.setAttribute(elem, 'aria-label', fullMessage);
7425
+ }
7082
7426
  }
7083
- BooleanFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterMenuComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
7084
- BooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BooleanFilterMenuComponent, selector: "kendo-treelist-boolean-filter-menu", inputs: { filter: "filter", filterService: "filterService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
7427
+ BooleanFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterMenuComponent, deps: [{ token: i0.Renderer2 }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
7428
+ BooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BooleanFilterMenuComponent, selector: "kendo-treelist-boolean-filter-menu", inputs: { filter: "filter", filterService: "filterService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, viewQueries: [{ propertyName: "inputElem", first: true, predicate: ["inputElem"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
7085
7429
  <ul class="k-radio-list k-reset">
7086
7430
  <li *ngFor="let item of items">
7087
- <input type="radio"
7431
+ <input #inputElem type="radio"
7088
7432
  kendoRadioButton
7089
7433
  [name]="idPrefix"
7090
7434
  [checked]="isSelected(item.value)"
@@ -7094,7 +7438,7 @@ BooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
7094
7438
  <label class="k-radio-label" [attr.for]="radioId(item.value)">{{item.text}}</label>
7095
7439
  </li>
7096
7440
  </ul>
7097
- `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.RadioButtonDirective, selector: "input[kendoRadioButton]", inputs: ["size"] }] });
7441
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.RadioButtonDirective, selector: "input[kendoRadioButton]", inputs: ["size"] }] });
7098
7442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{
7099
7443
  type: Component,
7100
7444
  args: [{
@@ -7102,7 +7446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7102
7446
  template: `
7103
7447
  <ul class="k-radio-list k-reset">
7104
7448
  <li *ngFor="let item of items">
7105
- <input type="radio"
7449
+ <input #inputElem type="radio"
7106
7450
  kendoRadioButton
7107
7451
  [name]="idPrefix"
7108
7452
  [checked]="isSelected(item.value)"
@@ -7114,9 +7458,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7114
7458
  </ul>
7115
7459
  `
7116
7460
  }]
7117
- }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { hostClasses: [{
7461
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1$1.LocalizationService }]; }, propDecorators: { hostClasses: [{
7118
7462
  type: HostBinding,
7119
7463
  args: ['class.k-filtercell']
7464
+ }], inputElem: [{
7465
+ type: ViewChild,
7466
+ args: ['inputElem']
7120
7467
  }], filter: [{
7121
7468
  type: Input
7122
7469
  }], filterService: [{
@@ -7316,7 +7663,7 @@ FilterMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
7316
7663
  </div>
7317
7664
  </div>
7318
7665
  </form>
7319
- `, isInline: true, directives: [{ type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
7666
+ `, isInline: true, directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
7320
7667
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{
7321
7668
  type: Component,
7322
7669
  args: [{
@@ -7418,7 +7765,7 @@ FilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
7418
7765
  >
7419
7766
  </kendo-treelist-filter-menu-container>
7420
7767
  </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"] }] });
7768
+ `, 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
7769
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterMenuComponent, decorators: [{
7423
7770
  type: Component,
7424
7771
  args: [{
@@ -7456,7 +7803,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7456
7803
  *
7457
7804
  * @example
7458
7805
  * ```html
7459
- * <kendo-treelist>
7806
+ * <kendo-treelist ...>
7460
7807
  * <ng-template
7461
7808
  * kendoTreeListColumnMenuTemplate
7462
7809
  * let-service="service"
@@ -7526,7 +7873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7526
7873
  *
7527
7874
  * @example
7528
7875
  * ```html
7529
- * <kendo-treelist>
7876
+ * <kendo-treelist ...>
7530
7877
  * <kendo-treelist-column field="ProductName">
7531
7878
  * <ng-template kendoTreeListColumnMenuTemplate>
7532
7879
  * <kendo-treelist-columnmenu-item text="Item Text" [expanded]="true">
@@ -7559,12 +7906,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7559
7906
  * Represents an item that can be placed inside a
7560
7907
  * [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
7561
7908
  *
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 %}
7909
+ * * @example
7910
+ * ```html
7911
+ * <kendo-treelist ...>
7912
+ * <ng-template kendoTreeListColumnMenuTemplate let-service="service" let-column="column">
7913
+ * <kendo-treelist-columnmenu-item text="Fit column"></kendo-treelist-columnmenu-item>
7914
+ * </ng-template>
7915
+ * </kendo-treelist>
7916
+ * ```
7568
7917
  */
7569
7918
  class ColumnMenuItemComponent {
7570
7919
  constructor() {
@@ -7619,7 +7968,7 @@ ColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
7619
7968
  <ng-container [ngTemplateOutlet]="contentTemplate.templateRef">
7620
7969
  </ng-container>
7621
7970
  <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: [
7971
+ `, 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
7972
  trigger('state', [
7624
7973
  state('collapsed', style({ display: 'none' })),
7625
7974
  state('expanded', style({ display: 'block' })),
@@ -7706,19 +8055,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7706
8055
  }] } });
7707
8056
 
7708
8057
  /**
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.
8058
+ * Represents the column-menu item for sorting TreeList columns.
7712
8059
  *
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.
8060
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8061
+ *
8062
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8063
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-sort` component.
7715
8064
  *
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
8065
  */
7723
8066
  class ColumnMenuSortComponent extends ColumnMenuItemBase {
7724
8067
  constructor(localization, sortService) {
@@ -7800,19 +8143,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7800
8143
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: SortService }]; } });
7801
8144
 
7802
8145
  /**
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.
8146
+ * Represents the column-menu item that allows the user to lock or unlock columns.
7806
8147
  *
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.
8148
+ * The componnt can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8149
+ *
8150
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8151
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-lock` component.
7809
8152
  *
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
8153
  */
7817
8154
  class ColumnMenuLockComponent extends ColumnMenuItemBase {
7818
8155
  constructor(localization, columnInfoService, changeDetector) {
@@ -8099,18 +8436,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8099
8436
  }] } });
8100
8437
 
8101
8438
  /**
8102
- * Represents the component for selecting columns in the TreeList that can be placed
8103
- * inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8439
+ * Represents the column-menu item for selecting columns in the TreeList. [See example](slug:columnmenu_treelist#toc-column-chooser-item).
8440
+ *
8441
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8104
8442
  *
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.
8443
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8444
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-chooser` component.
8107
8445
  *
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
8446
  */
8115
8447
  class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8116
8448
  constructor(localization, columnInfoService, changeDetector) {
@@ -8128,6 +8460,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8128
8460
  this.collapse = new EventEmitter();
8129
8461
  /**
8130
8462
  * Specifies if the content is expanded.
8463
+ * @default false
8131
8464
  */
8132
8465
  this.expanded = false;
8133
8466
  /**
@@ -8152,7 +8485,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
8152
8485
  }
8153
8486
  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
8487
  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
8488
+ <kendo-treelist-columnmenu-item
8156
8489
  [text]="localization.get('columns')"
8157
8490
  icon="columns"
8158
8491
  [svgIcon]="columnsIcon"
@@ -8177,7 +8510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8177
8510
  args: [{
8178
8511
  selector: 'kendo-treelist-columnmenu-chooser',
8179
8512
  template: `
8180
- <kendo-treelist-columnmenu-item
8513
+ <kendo-treelist-columnmenu-item
8181
8514
  [text]="localization.get('columns')"
8182
8515
  icon="columns"
8183
8516
  [svgIcon]="columnsIcon"
@@ -8207,18 +8540,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8207
8540
  }] } });
8208
8541
 
8209
8542
  /**
8210
- * Represents the component for editing column filters in the TreeList that can be placed
8211
- * inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8543
+ * Represents the column-menu item for editing column filters in the TreeList.
8544
+ *
8545
+ * The component can be placed inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive.
8212
8546
  *
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.
8547
+ * To register the component as a known column menu item, set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %})
8548
+ * that is passed by the template to the service input of the `kendo-treelist-columnmenu-filter` component.
8215
8549
  *
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
8550
  */
8223
8551
  class ColumnMenuFilterComponent extends ColumnMenuItemBase {
8224
8552
  constructor(localization) {
@@ -8234,6 +8562,7 @@ class ColumnMenuFilterComponent extends ColumnMenuItemBase {
8234
8562
  this.collapse = new EventEmitter();
8235
8563
  /**
8236
8564
  * Specifies if the content is expanded.
8565
+ * @default false
8237
8566
  */
8238
8567
  this.expanded = false;
8239
8568
  /**
@@ -8295,7 +8624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8295
8624
 
8296
8625
  const POPUP_CLASS = 'k-grid-columnmenu-popup';
8297
8626
  /**
8298
- * Represents the [column menu]({% slug columnmenu_treelist %}) component.
8627
+ * Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
8299
8628
  */
8300
8629
  class ColumnMenuComponent {
8301
8630
  constructor(popupService, localization, service) {
@@ -8427,7 +8756,7 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8427
8756
  [expanded]="expandedFilter" (expand)="onFilterExpand()">
8428
8757
  </kendo-treelist-columnmenu-filter>
8429
8758
  </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"] }] });
8759
+ `, 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
8760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuComponent, decorators: [{
8432
8761
  type: Component,
8433
8762
  args: [{
@@ -8485,6 +8814,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8485
8814
 
8486
8815
  /**
8487
8816
  * Represents a component which accommodates the filter operators.
8817
+ *
8818
+ * @example
8819
+ * ```html
8820
+ * <kendo-treelist ...>
8821
+ * <kendo-treelist-column field="ProductName">
8822
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
8823
+ * <input />
8824
+ * <kendo-treelist-filter-cell-operators
8825
+ * [operators]="[{text: 'Equals', value: 'eq'}]">
8826
+ * </kendo-treelist-filter-cell-operators>
8827
+ * </ng-template>
8828
+ * </kendo-treelist-column>
8829
+ * </kendo-treelist>
8830
+ * ```
8488
8831
  */
8489
8832
  class FilterCellOperatorsComponent {
8490
8833
  constructor(localization) {
@@ -8498,6 +8841,7 @@ class FilterCellOperatorsComponent {
8498
8841
  /**
8499
8842
  * Determines if the list of operators will be displayed.
8500
8843
  * @type {boolean}
8844
+ * @default true
8501
8845
  */
8502
8846
  this.showOperators = true;
8503
8847
  /**
@@ -8558,9 +8902,23 @@ class FilterCellOperatorsComponent {
8558
8902
  this.subscription.unsubscribe();
8559
8903
  }
8560
8904
  }
8905
+ /**
8906
+ * @hidden
8907
+ */
8908
+ get columnLabel() {
8909
+ const localizationMsg = this.localization.get('filterCellOperatorLabel') || '';
8910
+ const columnName = this.column.title || this.column.field;
8911
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
8912
+ }
8913
+ /**
8914
+ * @hidden
8915
+ */
8916
+ messageFor(token) {
8917
+ return this.localization.get(token);
8918
+ }
8561
8919
  }
8562
8920
  FilterCellOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellOperatorsComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
8563
- FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellOperatorsComponent, selector: "kendo-treelist-filter-cell-operators", inputs: { operators: "operators", showButton: "showButton", showOperators: "showOperators", value: "value" }, outputs: { valueChange: "valueChange", clear: "clear" }, host: { properties: { "class.k-filtercell-operator": "this.hostClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: `
8921
+ FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellOperatorsComponent, selector: "kendo-treelist-filter-cell-operators", inputs: { operators: "operators", showButton: "showButton", showOperators: "showOperators", value: "value", column: "column" }, outputs: { valueChange: "valueChange", clear: "clear" }, host: { properties: { "class.k-filtercell-operator": "this.hostClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: `
8564
8922
  <kendo-dropdownlist
8565
8923
  #dropdown
8566
8924
  *ngIf="showOperators"
@@ -8569,6 +8927,7 @@ FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
8569
8927
  class="k-dropdown-operator"
8570
8928
  (valueChange)="onChange($event)"
8571
8929
  [value]="value"
8930
+ [attr.aria-label]="columnLabel"
8572
8931
  iconClass="k-i-filter"
8573
8932
  [valuePrimitive]="true"
8574
8933
  textField="text"
@@ -8600,6 +8959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8600
8959
  class="k-dropdown-operator"
8601
8960
  (valueChange)="onChange($event)"
8602
8961
  [value]="value"
8962
+ [attr.aria-label]="columnLabel"
8603
8963
  iconClass="k-i-filter"
8604
8964
  [valuePrimitive]="true"
8605
8965
  textField="text"
@@ -8633,7 +8993,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8633
8993
  type: Input
8634
8994
  }], value: [{
8635
8995
  type: Input
8636
- }], valueChange: [{
8996
+ }], column: [{
8997
+ type: Input
8998
+ }], valueChange: [{
8637
8999
  type: Output
8638
9000
  }], clear: [{
8639
9001
  type: Output
@@ -8669,11 +9031,12 @@ FilterCellWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8669
9031
  <kendo-treelist-filter-cell-operators
8670
9032
  [showOperators]="showOperators"
8671
9033
  [operators]="operators"
9034
+ [column]="column"
8672
9035
  (clear)="onClear()"
8673
9036
  [showButton]="showButton"
8674
9037
  [(value)]="currentOperator">
8675
9038
  </kendo-treelist-filter-cell-operators>
8676
- `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-treelist-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value"], outputs: ["valueChange", "clear"] }] });
9039
+ `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-treelist-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value", "column"], outputs: ["valueChange", "clear"] }] });
8677
9040
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellWrapperComponent, decorators: [{
8678
9041
  type: Component,
8679
9042
  args: [{
@@ -8683,6 +9046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8683
9046
  <kendo-treelist-filter-cell-operators
8684
9047
  [showOperators]="showOperators"
8685
9048
  [operators]="operators"
9049
+ [column]="column"
8686
9050
  (clear)="onClear()"
8687
9051
  [showButton]="showButton"
8688
9052
  [(value)]="currentOperator">
@@ -8705,17 +9069,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8705
9069
  *
8706
9070
  * @example
8707
9071
  *
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
- * ```
9072
+ * ```html
9073
+ * <kendo-treelist-column field="ProductName">
9074
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9075
+ * <kendo-treelist-string-filter-cell
9076
+ * [column]="column"
9077
+ * [filter]="filter">
9078
+ * </kendo-treelist-string-filter-cell>
9079
+ * </ng-template>
9080
+ * </kendo-treelist-column>
9081
+ * ```
8719
9082
  */
8720
9083
  class StringFilterCellComponent extends StringFilterComponent {
8721
9084
  constructor(filterService, localization) {
@@ -8724,15 +9087,25 @@ class StringFilterCellComponent extends StringFilterComponent {
8724
9087
  * Determines the delay time (in milliseconds) before the filter value is submitted.
8725
9088
  * A value of `0` indicates no delay. The default value is `500`.
8726
9089
  * @type {boolean}
9090
+ * @default 500
8727
9091
  */
8728
9092
  this.filterDelay = 500;
8729
9093
  /**
8730
9094
  * Determines if the drop-down filter operators will be displayed.
8731
9095
  * The default value is `true`.
8732
9096
  * @type {boolean}
9097
+ * @default true
8733
9098
  */
8734
9099
  this.showOperators = true;
8735
9100
  }
9101
+ /**
9102
+ * @hidden
9103
+ */
9104
+ get columnLabel() {
9105
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
9106
+ const columnName = this.column.title || this.column.field;
9107
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
9108
+ }
8736
9109
  }
8737
9110
  StringFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterCellComponent, deps: [{ token: FilterService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
8738
9111
  StringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: StringFilterCellComponent, selector: "kendo-treelist-string-filter-cell", inputs: { filterDelay: "filterDelay", showOperators: "showOperators" }, usesInheritance: true, ngImport: i0, template: `
@@ -8742,14 +9115,15 @@ StringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
8742
9115
  [operators]="operators"
8743
9116
  [defaultOperator]="operator"
8744
9117
  [showOperators]="showOperators">
8745
- <input
9118
+ <input
8746
9119
  class="k-textbox k-input k-input-md k-rounded-md k-input-solid"
8747
9120
  kendoTreeListFocusable
8748
9121
  kendoFilterInput
9122
+ [columnLabel]="columnLabel"
8749
9123
  [filterDelay]="filterDelay"
8750
9124
  [ngModel]="currentFilter?.value" />
8751
9125
  </kendo-treelist-filter-wrapper-cell>
8752
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }], directives: [{ 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: 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"] }, { 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"] }] });
9126
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }], directives: [{ type: i4$1.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: 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", "columnLabel", "column", "value"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
8753
9127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterCellComponent, decorators: [{
8754
9128
  type: Component,
8755
9129
  args: [{
@@ -8761,10 +9135,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8761
9135
  [operators]="operators"
8762
9136
  [defaultOperator]="operator"
8763
9137
  [showOperators]="showOperators">
8764
- <input
9138
+ <input
8765
9139
  class="k-textbox k-input k-input-md k-rounded-md k-input-solid"
8766
9140
  kendoTreeListFocusable
8767
9141
  kendoFilterInput
9142
+ [columnLabel]="columnLabel"
8768
9143
  [filterDelay]="filterDelay"
8769
9144
  [ngModel]="currentFilter?.value" />
8770
9145
  </kendo-treelist-filter-wrapper-cell>
@@ -8780,16 +9155,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8780
9155
  * Represents a numeric filter cell.
8781
9156
  *
8782
9157
  * @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
- * ```
9158
+ * ```html
9159
+ * <kendo-treelist-column field="ProductName" title="Product Name">
9160
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9161
+ * <kendo-treelist-numeric-filter-cell
9162
+ * [column]="column"
9163
+ * [filter]="filter">
9164
+ * </kendo-treelist-numeric-filter-cell>
9165
+ * </ng-template>
9166
+ * </kendo-treelist-column>
9167
+ * ```
8793
9168
  */
8794
9169
  class NumericFilterCellComponent extends NumericFilterComponent {
8795
9170
  constructor(filterService, localization) {
@@ -8797,17 +9172,26 @@ class NumericFilterCellComponent extends NumericFilterComponent {
8797
9172
  this.localization = localization;
8798
9173
  /**
8799
9174
  * 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`.
9175
+ * A value of `0` indicates no delay.
8801
9176
  * @type {boolean}
9177
+ * @default 500
8802
9178
  */
8803
9179
  this.filterDelay = 500;
8804
9180
  /**
8805
9181
  * Determines if the drop-down filter operators will be displayed.
8806
- * The default value is `true`.
8807
9182
  * @type {boolean}
9183
+ * @default true
8808
9184
  */
8809
9185
  this.showOperators = true;
8810
9186
  }
9187
+ /**
9188
+ * @hidden
9189
+ */
9190
+ get columnLabel() {
9191
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
9192
+ const columnName = this.column.title || this.column.field;
9193
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
9194
+ }
8811
9195
  }
8812
9196
  NumericFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericFilterCellComponent, deps: [{ token: FilterService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
8813
9197
  NumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NumericFilterCellComponent, selector: "kendo-treelist-numeric-filter-cell", inputs: { filterDelay: "filterDelay", showOperators: "showOperators" }, usesInheritance: true, ngImport: i0, template: `
@@ -8820,6 +9204,7 @@ NumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8820
9204
  <kendo-numerictextbox
8821
9205
  kendoTreeListFocusable
8822
9206
  kendoFilterInput
9207
+ [columnLabel]="columnLabel"
8823
9208
  [filterDelay]="filterDelay"
8824
9209
  [autoCorrect]="true"
8825
9210
  [value]="currentFilter?.value"
@@ -8831,7 +9216,7 @@ NumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8831
9216
  [step]="step">
8832
9217
  </kendo-numerictextbox>
8833
9218
  </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"] }] });
9219
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i3$2.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", "columnLabel", "column", "value"] }] });
8835
9220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericFilterCellComponent, decorators: [{
8836
9221
  type: Component,
8837
9222
  args: [{
@@ -8846,6 +9231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8846
9231
  <kendo-numerictextbox
8847
9232
  kendoTreeListFocusable
8848
9233
  kendoFilterInput
9234
+ [columnLabel]="columnLabel"
8849
9235
  [filterDelay]="filterDelay"
8850
9236
  [autoCorrect]="true"
8851
9237
  [value]="currentFilter?.value"
@@ -8867,19 +9253,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8867
9253
 
8868
9254
  /**
8869
9255
  * Represents a Boolean filter-cell component.
9256
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-default-filter-operator).
8870
9257
  *
8871
9258
  * @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
- * ```
9259
+ * ```html
9260
+ * <kendo-treelist-column field="ProductName" title="Product Name">
9261
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9262
+ * <kendo-treelist-boolean-filter-cell
9263
+ * [column]="column"
9264
+ * [filter]="filter">
9265
+ * </kendo-treelist-boolean-filter-cell>
9266
+ * </ng-template>
9267
+ * </kendo-treelist-column>
9268
+ * ```
8883
9269
  */
8884
9270
  class BooleanFilterCellComponent extends BooleanFilterComponent {
8885
9271
  constructor(filterService, localization, cd) {
@@ -8890,6 +9276,20 @@ class BooleanFilterCellComponent extends BooleanFilterComponent {
8890
9276
  super.localizationChange();
8891
9277
  this.cd.markForCheck();
8892
9278
  }
9279
+ /**
9280
+ * @hidden
9281
+ */
9282
+ messageFor(token) {
9283
+ return this.localization.get(token);
9284
+ }
9285
+ /**
9286
+ * @hidden
9287
+ */
9288
+ get columnLabel() {
9289
+ const localizationMsg = this.localization.get('booleanFilterCellLabel') || '';
9290
+ const columnName = this.column.title || this.column.field;
9291
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
9292
+ }
8893
9293
  }
8894
9294
  BooleanFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterCellComponent, deps: [{ token: FilterService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8895
9295
  BooleanFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BooleanFilterCellComponent, selector: "kendo-treelist-boolean-filter-cell", usesInheritance: true, ngImport: i0, template: `
@@ -8901,6 +9301,7 @@ BooleanFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8901
9301
  <kendo-dropdownlist
8902
9302
  kendoFilterInput
8903
9303
  [defaultItem]="defaultItem"
9304
+ [columnLabel]="columnLabel"
8904
9305
  [data]="items"
8905
9306
  textField="text"
8906
9307
  valueField="value"
@@ -8909,7 +9310,7 @@ BooleanFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
8909
9310
  [value]="currentFilter?.value">
8910
9311
  </kendo-dropdownlist>
8911
9312
  </kendo-treelist-filter-wrapper-cell>
8912
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { 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"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
9313
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { 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"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "column", "value"] }] });
8913
9314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BooleanFilterCellComponent, decorators: [{
8914
9315
  type: Component,
8915
9316
  args: [{
@@ -8923,6 +9324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8923
9324
  <kendo-dropdownlist
8924
9325
  kendoFilterInput
8925
9326
  [defaultItem]="defaultItem"
9327
+ [columnLabel]="columnLabel"
8926
9328
  [data]="items"
8927
9329
  textField="text"
8928
9330
  valueField="value"
@@ -8940,17 +9342,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8940
9342
  *
8941
9343
  * @example
8942
9344
  *
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
- * ```
9345
+ * ```html
9346
+ * <kendo-treelist-column field="OrderDate">
9347
+ * <ng-template kendoTreeListFilterCellTemplate let-filter let-column="column">
9348
+ * <kendo-treelist-date-filter-cell
9349
+ * [column]="column"
9350
+ * [filter]="filter">
9351
+ * </kendo-treelist-date-filter-cell>
9352
+ * </ng-template>
9353
+ * </kendo-treelist-column>
9354
+ * ```
8954
9355
  */
8955
9356
  class DateFilterCellComponent extends DateFilterComponent {
8956
9357
  constructor(filterService, localization) {
@@ -8959,9 +9360,18 @@ class DateFilterCellComponent extends DateFilterComponent {
8959
9360
  /**
8960
9361
  * Determines if the drop-down filter operators will be displayed. The default value is `true`.
8961
9362
  * @type {boolean}
9363
+ * @default true
8962
9364
  */
8963
9365
  this.showOperators = true;
8964
9366
  }
9367
+ /**
9368
+ * @hidden
9369
+ */
9370
+ get columnLabel() {
9371
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
9372
+ const columnName = this.column.title || this.column.field;
9373
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
9374
+ }
8965
9375
  }
8966
9376
  DateFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, deps: [{ token: FilterService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
8967
9377
  DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateFilterCellComponent, selector: "kendo-treelist-date-filter-cell", inputs: { showOperators: "showOperators" }, usesInheritance: true, ngImport: i0, template: `
@@ -8976,6 +9386,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
8976
9386
  kendoFilterInput
8977
9387
  [value]="currentFilter?.value"
8978
9388
  [format]="format"
9389
+ [columnLabel]="columnLabel"
8979
9390
  [formatPlaceholder]="formatPlaceholder"
8980
9391
  [placeholder]="placeholder"
8981
9392
  [activeView]="activeView"
@@ -8987,7 +9398,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
8987
9398
  >
8988
9399
  </kendo-datepicker>
8989
9400
  </kendo-treelist-filter-wrapper-cell>
8990
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { 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: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
9401
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { 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: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "column", "value"] }] });
8991
9402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, decorators: [{
8992
9403
  type: Component,
8993
9404
  args: [{
@@ -9004,6 +9415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9004
9415
  kendoFilterInput
9005
9416
  [value]="currentFilter?.value"
9006
9417
  [format]="format"
9418
+ [columnLabel]="columnLabel"
9007
9419
  [formatPlaceholder]="formatPlaceholder"
9008
9420
  [placeholder]="placeholder"
9009
9421
  [activeView]="activeView"
@@ -10019,6 +10431,9 @@ class HeaderComponent {
10019
10431
  get leafColumns() {
10020
10432
  return this._leafColumns;
10021
10433
  }
10434
+ messageFor(token) {
10435
+ return this.localization.get(token);
10436
+ }
10022
10437
  attachTargets() {
10023
10438
  if (this.targetSubscription) {
10024
10439
  this.targetSubscription.unsubscribe();
@@ -10209,6 +10624,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
10209
10624
  <input
10210
10625
  type="checkbox"
10211
10626
  class="k-checkbox k-checkbox-md k-rounded-md"
10627
+ [attr.aria-label]="messageFor('selectAllRowsCheckboxLabel')"
10212
10628
  kendoTreeListFocusable
10213
10629
  (click)="selectAllClick($event)" />
10214
10630
  </ng-template>
@@ -10282,7 +10698,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
10282
10698
  [logicalSlaveCellsCount]="unlockedColumnsCount"
10283
10699
  >
10284
10700
  </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"] }] });
10701
+ `, 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
10702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, decorators: [{
10287
10703
  type: Component,
10288
10704
  args: [{
@@ -10398,6 +10814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10398
10814
  <input
10399
10815
  type="checkbox"
10400
10816
  class="k-checkbox k-checkbox-md k-rounded-md"
10817
+ [attr.aria-label]="messageFor('selectAllRowsCheckboxLabel')"
10401
10818
  kendoTreeListFocusable
10402
10819
  (click)="selectAllClick($event)" />
10403
10820
  </ng-template>
@@ -10653,6 +11070,10 @@ const ICON_CLASS = 'k-icon k-svg-icon';
10653
11070
  * @hidden
10654
11071
  */
10655
11072
  const IGNORE_CONTAINER_CLASSES = 'k-treelist-ignore-click';
11073
+ /**
11074
+ * @hidden
11075
+ */
11076
+ const DRAG_HANDLE_CLASS = 'k-drag-cell';
10656
11077
 
10657
11078
  /* eslint-disable @angular-eslint/pipe-prefix */
10658
11079
  /**
@@ -10719,13 +11140,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10719
11140
  * @hidden
10720
11141
  */
10721
11142
  class CellComponent {
10722
- constructor(editService, focusGroup) {
11143
+ constructor(editService, localization, focusGroup) {
10723
11144
  this.editService = editService;
11145
+ this.localization = localization;
10724
11146
  this.focusGroup = focusGroup;
10725
11147
  this.isNew = false;
10726
11148
  this.level = 0;
10727
11149
  this.caretAltDownIcon = caretAltDownIcon;
10728
11150
  this.caretAltRightIcon = caretAltRightIcon;
11151
+ this.caretAltLeftIcon = caretAltLeftIcon;
11152
+ this.reorderIcon = reorderIcon;
10729
11153
  this.cellContext = {};
10730
11154
  this._templateContext = {};
10731
11155
  this._editTemplateContext = {};
@@ -10741,6 +11165,12 @@ class CellComponent {
10741
11165
  get textNoWrapClass() {
10742
11166
  return this.column.expandable;
10743
11167
  }
11168
+ get dragHandleCellClass() {
11169
+ return isRowReorderColumn(this.column);
11170
+ }
11171
+ get dragRowHandleLabel() {
11172
+ return isRowReorderColumn(this.column) ? this.localization.get('dragRowHandleLabel') : undefined;
11173
+ }
10744
11174
  set viewItem(value) {
10745
11175
  this._viewItem = value;
10746
11176
  this.cellContext.viewItem = this.viewItem;
@@ -10807,9 +11237,28 @@ class CellComponent {
10807
11237
  context.loading = this.loading;
10808
11238
  context.rowIndex = this.viewItem.rowIndex;
10809
11239
  }
11240
+ get arrowIcon() {
11241
+ const icon = !this.isExpanded ?
11242
+ !this.localization.rtl ?
11243
+ 'caret-alt-right' :
11244
+ 'caret-alt-left' :
11245
+ 'caret-alt-down';
11246
+ return icon;
11247
+ }
11248
+ get arrowSVGIcon() {
11249
+ const icon = !this.isExpanded ?
11250
+ !this.localization.rtl ?
11251
+ this.caretAltRightIcon :
11252
+ this.caretAltLeftIcon :
11253
+ this.caretAltDownIcon;
11254
+ return icon;
11255
+ }
11256
+ messageFor(token) {
11257
+ return this.localization.get(token);
11258
+ }
10810
11259
  }
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: `
11260
+ 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 });
11261
+ 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
11262
  <ng-container [ngSwitch]="isEdited">
10814
11263
  <ng-container *ngSwitchCase="false">
10815
11264
  <ng-container *ngIf="column.expandable">
@@ -10817,8 +11266,8 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10817
11266
  <kendo-icon-wrapper
10818
11267
  aria-hidden="true"
10819
11268
  *ngIf="hasChildren && expandIcons && !loading"
10820
- [name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
10821
- [svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
11269
+ [name]="arrowIcon"
11270
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
10822
11271
  <span class="k-icon k-i-loading" *ngIf="hasChildren && expandIcons && loading"></span>
10823
11272
  </ng-container>
10824
11273
  <ng-container *ngIf="column.templateRef"
@@ -10835,9 +11284,16 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10835
11284
  <input
10836
11285
  type="checkbox"
10837
11286
  kendoTreeListFocusable
11287
+ [attr.aria-label]="messageFor('selectRowCheckboxLabel')"
10838
11288
  class="k-checkbox k-checkbox-md k-rounded-md"
10839
11289
  [checked]="selected" />
10840
11290
  </ng-template>
11291
+ <ng-container *ngIf="column.isRowReorderColumn && !isNew">
11292
+ <kendo-icon-wrapper
11293
+ name="reorder"
11294
+ [svgIcon]="reorderIcon">
11295
+ </kendo-icon-wrapper>
11296
+ </ng-container>
10841
11297
  </ng-container>
10842
11298
  <ng-container *ngSwitchCase="true">
10843
11299
  <ng-container
@@ -10878,7 +11334,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
10878
11334
  </ng-container>
10879
11335
  </ng-container>
10880
11336
  </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 } });
11337
+ `, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i3$2.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: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$1.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
11338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
10883
11339
  type: Component,
10884
11340
  args: [{
@@ -10891,8 +11347,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10891
11347
  <kendo-icon-wrapper
10892
11348
  aria-hidden="true"
10893
11349
  *ngIf="hasChildren && expandIcons && !loading"
10894
- [name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
10895
- [svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
11350
+ [name]="arrowIcon"
11351
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
10896
11352
  <span class="k-icon k-i-loading" *ngIf="hasChildren && expandIcons && loading"></span>
10897
11353
  </ng-container>
10898
11354
  <ng-container *ngIf="column.templateRef"
@@ -10909,9 +11365,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10909
11365
  <input
10910
11366
  type="checkbox"
10911
11367
  kendoTreeListFocusable
11368
+ [attr.aria-label]="messageFor('selectRowCheckboxLabel')"
10912
11369
  class="k-checkbox k-checkbox-md k-rounded-md"
10913
11370
  [checked]="selected" />
10914
11371
  </ng-template>
11372
+ <ng-container *ngIf="column.isRowReorderColumn && !isNew">
11373
+ <kendo-icon-wrapper
11374
+ name="reorder"
11375
+ [svgIcon]="reorderIcon">
11376
+ </kendo-icon-wrapper>
11377
+ </ng-container>
10915
11378
  </ng-container>
10916
11379
  <ng-container *ngSwitchCase="true">
10917
11380
  <ng-container
@@ -10954,7 +11417,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10954
11417
  </ng-container>
10955
11418
  `
10956
11419
  }]
10957
- }], ctorParameters: function () { return [{ type: EditService }, { type: FocusGroup }]; }, propDecorators: { commandCellClass: [{
11420
+ }], ctorParameters: function () { return [{ type: EditService }, { type: i1$1.LocalizationService }, { type: FocusGroup }]; }, propDecorators: { commandCellClass: [{
10958
11421
  type: HostBinding,
10959
11422
  args: ['class.k-command-cell']
10960
11423
  }], isCheckboxColumn: [{
@@ -10963,6 +11426,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
10963
11426
  }], textNoWrapClass: [{
10964
11427
  type: HostBinding,
10965
11428
  args: ['class.k-text-nowrap']
11429
+ }], dragHandleCellClass: [{
11430
+ type: HostBinding,
11431
+ args: ['class.k-drag-cell']
11432
+ }, {
11433
+ type: HostBinding,
11434
+ args: ['class.k-touch-action-none']
11435
+ }], dragRowHandleLabel: [{
11436
+ type: HostBinding,
11437
+ args: ['attr.aria-label']
10966
11438
  }], column: [{
10967
11439
  type: Input
10968
11440
  }], columnIndex: [{
@@ -11167,8 +11639,10 @@ class TableBodyComponent {
11167
11639
  clickHandler(eventArg) {
11168
11640
  const target = eventArg.target;
11169
11641
  const { cell, row } = this.targetElements(target);
11170
- if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) &&
11171
- !hasClasses(row, NON_DATA_ROW_CLASSES)) {
11642
+ const forbiddenCellClasses = NON_DATA_CELL_CLASSES.concat(` ${DRAG_HANDLE_CLASS}`);
11643
+ const isValidCell = cell ? !hasClasses(cell, forbiddenCellClasses) : false;
11644
+ const isValidRow = row ? !hasClasses(row, NON_DATA_ROW_CLASSES) : false;
11645
+ if (isValidRow && isValidCell) {
11172
11646
  if (this.expandClick(eventArg, row) || this.checkboxClick(cell, row, eventArg)) {
11173
11647
  return;
11174
11648
  }
@@ -12197,8 +12671,8 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
12197
12671
  class="k-table k-grid-table k-table-md"
12198
12672
  role="presentation"
12199
12673
  [style.width.px]="lockedWidth">
12200
- <colgroup kendoTreeListColGroup
12201
- role="presentation"
12674
+ <colgroup
12675
+ kendoTreeListColGroup
12202
12676
  [columns]="$any(lockedLeafColumns)">
12203
12677
  </colgroup>
12204
12678
  <tbody kendoTreeListTableBody
@@ -12221,16 +12695,17 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
12221
12695
  <div [style.height.px]="totalHeight"></div>
12222
12696
  </div>
12223
12697
  </div>
12224
- <div #container
12225
- class="k-grid-content k-virtual-content"
12226
- role="presentation" tabindex="-1"
12227
- [kendoTreeListResizableContainer]="lockedLeafColumns.length > 0"
12228
- [lockedWidth]="lockedWidth + 1">
12698
+ <div
12699
+ #container
12700
+ class="k-grid-content k-virtual-content"
12701
+ [kendoTreeListResizableContainer]="lockedLeafColumns.length > 0"
12702
+ [lockedWidth]="lockedWidth + 1"
12703
+ >
12229
12704
  <div role="presentation" class="k-grid-table-wrap">
12230
12705
  <table [style.width.px]="nonLockedWidth" #table [virtualColumns]="virtualColumns"
12231
12706
  class="k-table k-grid-table k-table-md" role="presentation">
12232
- <colgroup kendoTreeListColGroup
12233
- role="presentation"
12707
+ <colgroup
12708
+ kendoTreeListColGroup
12234
12709
  [columns]="$any(nonLockedColumnsToRender)">
12235
12710
  </colgroup>
12236
12711
  <tbody kendoTreeListTableBody
@@ -12282,8 +12757,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12282
12757
  class="k-table k-grid-table k-table-md"
12283
12758
  role="presentation"
12284
12759
  [style.width.px]="lockedWidth">
12285
- <colgroup kendoTreeListColGroup
12286
- role="presentation"
12760
+ <colgroup
12761
+ kendoTreeListColGroup
12287
12762
  [columns]="$any(lockedLeafColumns)">
12288
12763
  </colgroup>
12289
12764
  <tbody kendoTreeListTableBody
@@ -12306,16 +12781,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12306
12781
  <div [style.height.px]="totalHeight"></div>
12307
12782
  </div>
12308
12783
  </div>
12309
- <div #container
12310
- class="k-grid-content k-virtual-content"
12311
- role="presentation" tabindex="-1"
12312
- [kendoTreeListResizableContainer]="lockedLeafColumns.length > 0"
12313
- [lockedWidth]="lockedWidth + 1">
12784
+ <div
12785
+ #container
12786
+ class="k-grid-content k-virtual-content"
12787
+ [kendoTreeListResizableContainer]="lockedLeafColumns.length > 0"
12788
+ [lockedWidth]="lockedWidth + 1"
12789
+ >
12314
12790
  <div role="presentation" class="k-grid-table-wrap">
12315
12791
  <table [style.width.px]="nonLockedWidth" #table [virtualColumns]="virtualColumns"
12316
12792
  class="k-table k-grid-table k-table-md" role="presentation">
12317
- <colgroup kendoTreeListColGroup
12318
- role="presentation"
12793
+ <colgroup
12794
+ kendoTreeListColGroup
12319
12795
  [columns]="$any(nonLockedColumnsToRender)">
12320
12796
  </colgroup>
12321
12797
  <tbody kendoTreeListTableBody
@@ -12445,6 +12921,10 @@ class PagerElementComponent {
12445
12921
  this.skip = this.pagerContext.skip;
12446
12922
  this.pageSize = this.pagerContext.pageSize;
12447
12923
  this.allCount = this.pagerContext.allCount;
12924
+ this.caretAltLeftIcon = caretAltLeftIcon;
12925
+ this.caretAltToLeftIcon = caretAltToLeftIcon;
12926
+ this.caretAltRightIcon = caretAltRightIcon;
12927
+ this.caretAltToRightIcon = caretAltToRightIcon;
12448
12928
  }
12449
12929
  /**
12450
12930
  * @hidden
@@ -12502,6 +12982,18 @@ class PagerElementComponent {
12502
12982
  this.subscriptions.unsubscribe();
12503
12983
  }
12504
12984
  }
12985
+ get prevArrowIcons() {
12986
+ return !this.localization.rtl ? ['caret-alt-to-left', 'caret-alt-left'] : ['caret-alt-to-right', 'caret-alt-right'];
12987
+ }
12988
+ get prevArrowSVGIcons() {
12989
+ return !this.localization.rtl ? [this.caretAltToLeftIcon, this.caretAltLeftIcon] : [this.caretAltToRightIcon, this.caretAltRightIcon];
12990
+ }
12991
+ get nextArrowIcons() {
12992
+ return !this.localization.rtl ? ['caret-alt-right', 'caret-alt-to-right'] : ['caret-alt-left', 'caret-alt-to-left'];
12993
+ }
12994
+ get nextArrowSVGIcons() {
12995
+ return !this.localization.rtl ? [this.caretAltRightIcon, this.caretAltToRightIcon] : [this.caretAltLeftIcon, this.caretAltToLeftIcon];
12996
+ }
12505
12997
  }
12506
12998
  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
12999
  PagerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerElementComponent, ngImport: i0 });
@@ -12518,8 +13010,6 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
12518
13010
  constructor(localization, pagerContext, cd, navigationService) {
12519
13011
  super(localization, pagerContext, cd);
12520
13012
  this.navigationService = navigationService;
12521
- this.caretAltLeftIcon = caretAltLeftIcon;
12522
- this.caretAltToLeftIcon = caretAltToLeftIcon;
12523
13013
  }
12524
13014
  /**
12525
13015
  * @hidden
@@ -12558,8 +13048,8 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12558
13048
  [attr.aria-label]="textFor('pagerFirstPage')"
12559
13049
  (click)="onButtonClick('firstPage')"
12560
13050
  role="button"
12561
- icon="caret-alt-to-left"
12562
- [svgIcon]="caretAltToLeftIcon"
13051
+ [icon]="prevArrowIcons[0]"
13052
+ [svgIcon]="prevArrowSVGIcons[0]"
12563
13053
  class="k-pager-nav k-pager-first"
12564
13054
  [disabled]="disabled"
12565
13055
  fillMode="flat"
@@ -12572,8 +13062,8 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12572
13062
  [enabled]="!disabled"
12573
13063
  class="k-pager-nav"
12574
13064
  [disabled]="disabled"
12575
- icon="caret-alt-left"
12576
- [svgIcon]="caretAltLeftIcon"
13065
+ [icon]="prevArrowIcons[1]"
13066
+ [svgIcon]="prevArrowSVGIcons[1]"
12577
13067
  fillMode="flat"
12578
13068
  rounded="none"
12579
13069
  [title]="textFor('pagerPreviousPage')"
@@ -12596,8 +13086,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12596
13086
  [attr.aria-label]="textFor('pagerFirstPage')"
12597
13087
  (click)="onButtonClick('firstPage')"
12598
13088
  role="button"
12599
- icon="caret-alt-to-left"
12600
- [svgIcon]="caretAltToLeftIcon"
13089
+ [icon]="prevArrowIcons[0]"
13090
+ [svgIcon]="prevArrowSVGIcons[0]"
12601
13091
  class="k-pager-nav k-pager-first"
12602
13092
  [disabled]="disabled"
12603
13093
  fillMode="flat"
@@ -12610,8 +13100,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12610
13100
  [enabled]="!disabled"
12611
13101
  class="k-pager-nav"
12612
13102
  [disabled]="disabled"
12613
- icon="caret-alt-left"
12614
- [svgIcon]="caretAltLeftIcon"
13103
+ [icon]="prevArrowIcons[1]"
13104
+ [svgIcon]="prevArrowSVGIcons[1]"
12615
13105
  fillMode="flat"
12616
13106
  rounded="none"
12617
13107
  [title]="textFor('pagerPreviousPage')"
@@ -12624,7 +13114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12624
13114
 
12625
13115
  /* eslint-disable @typescript-eslint/no-inferrable-types */
12626
13116
  /**
12627
- * Displays numeric buttons to enable navigation between the pages.
13117
+ * Displays numeric buttons to enable navigation between the pages ([see example]({% slug paging_treelist %}#toc-pager-templates)).
12628
13118
  */
12629
13119
  class PagerNumericButtonsComponent extends PagerElementComponent {
12630
13120
  constructor(localization, cd, pagerContext) {
@@ -12934,7 +13424,7 @@ PagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12934
13424
  </kendo-numerictextbox>
12935
13425
  {{textFor('pagerOf')}} {{totalPages}}
12936
13426
  </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"] }] });
13427
+ `, isInline: true, components: [{ type: i3$2.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
13428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInputComponent, decorators: [{
12939
13429
  type: Component,
12940
13430
  args: [{
@@ -12979,8 +13469,6 @@ class PagerNextButtonsComponent extends PagerElementComponent {
12979
13469
  constructor(localization, pagerContext, cd, navigationService) {
12980
13470
  super(localization, pagerContext, cd);
12981
13471
  this.navigationService = navigationService;
12982
- this.caretAltRightIcon = caretAltRightIcon;
12983
- this.caretAltToRightIcon = caretAltToRightIcon;
12984
13472
  }
12985
13473
  /**
12986
13474
  * @hidden
@@ -13015,8 +13503,8 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13015
13503
  type="button"
13016
13504
  kendoTreeListFocusable
13017
13505
  [enabled]="!disabled"
13018
- icon="caret-alt-right"
13019
- [svgIcon]="caretAltRightIcon"
13506
+ [icon]="nextArrowIcons[0]"
13507
+ [svgIcon]="nextArrowSVGIcons[0]"
13020
13508
  fillMode="flat"
13021
13509
  rounded="none"
13022
13510
  class="k-pager-nav"
@@ -13030,8 +13518,8 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13030
13518
  type="button"
13031
13519
  kendoTreeListFocusable
13032
13520
  [enabled]="!disabled"
13033
- icon="caret-alt-to-right"
13034
- [svgIcon]="caretAltToRightIcon"
13521
+ [icon]="nextArrowIcons[1]"
13522
+ [svgIcon]="nextArrowSVGIcons[1]"
13035
13523
  fillMode="flat"
13036
13524
  rounded="none"
13037
13525
  class="k-pager-nav k-pager-last"
@@ -13052,8 +13540,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13052
13540
  type="button"
13053
13541
  kendoTreeListFocusable
13054
13542
  [enabled]="!disabled"
13055
- icon="caret-alt-right"
13056
- [svgIcon]="caretAltRightIcon"
13543
+ [icon]="nextArrowIcons[0]"
13544
+ [svgIcon]="nextArrowSVGIcons[0]"
13057
13545
  fillMode="flat"
13058
13546
  rounded="none"
13059
13547
  class="k-pager-nav"
@@ -13067,8 +13555,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13067
13555
  type="button"
13068
13556
  kendoTreeListFocusable
13069
13557
  [enabled]="!disabled"
13070
- icon="caret-alt-to-right"
13071
- [svgIcon]="caretAltToRightIcon"
13558
+ [icon]="nextArrowIcons[1]"
13559
+ [svgIcon]="nextArrowSVGIcons[1]"
13072
13560
  fillMode="flat"
13073
13561
  rounded="none"
13074
13562
  class="k-pager-nav k-pager-last"
@@ -13240,7 +13728,7 @@ PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13240
13728
  [attr.aria-label]="textFor('pagerItemsPerPage')"
13241
13729
  (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
13242
13730
  <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 });
13731
+ `, 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", "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
13732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
13245
13733
  type: Component,
13246
13734
  args: [{
@@ -13642,7 +14130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13642
14130
  class Messages extends ComponentMessages {
13643
14131
  }
13644
14132
  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 });
14133
+ 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", filterInputLabel: "filterInputLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", 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", selectRowCheckboxLabel: "selectRowCheckboxLabel", selectAllRowsCheckboxLabel: "selectAllRowsCheckboxLabel" }, usesInheritance: true, ngImport: i0 });
13646
14134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Messages, decorators: [{
13647
14135
  type: Directive,
13648
14136
  args: [{}]
@@ -13674,6 +14162,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13674
14162
  type: Input
13675
14163
  }], filter: [{
13676
14164
  type: Input
14165
+ }], filterInputLabel: [{
14166
+ type: Input
14167
+ }], filterCellOperatorLabel: [{
14168
+ type: Input
14169
+ }], booleanFilterCellLabel: [{
14170
+ type: Input
13677
14171
  }], filterEqOperator: [{
13678
14172
  type: Input
13679
14173
  }], filterNotEqOperator: [{
@@ -13754,6 +14248,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13754
14248
  type: Input
13755
14249
  }], bottomToolbarLabel: [{
13756
14250
  type: Input
14251
+ }], dragRowHandleLabel: [{
14252
+ type: Input
14253
+ }], selectRowCheckboxLabel: [{
14254
+ type: Input
14255
+ }], selectAllRowsCheckboxLabel: [{
14256
+ type: Input
13757
14257
  }] } });
13758
14258
 
13759
14259
  /**
@@ -14068,15 +14568,14 @@ const isInEditedCell = (element, treelistElement) => closest(element, matchesCla
14068
14568
  /**
14069
14569
  * Represents the Kendo UI TreeList component for Angular.
14070
14570
  *
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 %}
14571
+ * @example
14572
+ * ```html
14573
+ * <kendo-treelist [kendoTreeListFlatBinding]="data" ...></kendo-treelist>
14574
+ * ```
14575
+ *
14077
14576
  */
14078
14577
  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) {
14578
+ 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
14579
  this.supportService = supportService;
14081
14580
  this.wrapper = wrapper;
14082
14581
  this.changeNotification = changeNotification;
@@ -14101,6 +14600,7 @@ class TreeListComponent {
14101
14600
  this.selectionService = selectionService;
14102
14601
  this.localization = localization;
14103
14602
  this.ctx = ctx;
14603
+ this.rowReorderService = rowReorderService;
14104
14604
  /**
14105
14605
  * Defines the page size used by the TreeList when [paging]({% slug paging_treelist %}) is enabled.
14106
14606
  *
@@ -14109,10 +14609,7 @@ class TreeListComponent {
14109
14609
  this.pageSize = 10;
14110
14610
  /**
14111
14611
  * 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.
14612
+ * @default 'scrollable'
14116
14613
  */
14117
14614
  this.scrollable = 'scrollable';
14118
14615
  /**
@@ -14120,49 +14617,12 @@ class TreeListComponent {
14120
14617
  *
14121
14618
  * By default, the TreeList tracks changes by the index of the data item.
14122
14619
  * 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
14620
  *
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
14621
  */
14163
14622
  this.trackBy = defaultTrackBy;
14164
14623
  /**
14165
14624
  * If set to `true`, the treelist will render only the columns in the current viewport.
14625
+ * @default false
14166
14626
  */
14167
14627
  this.virtualColumns = false;
14168
14628
  /**
@@ -14176,18 +14636,12 @@ class TreeListComponent {
14176
14636
  /**
14177
14637
  * Configures the pager of the TreeList ([see example]({% slug paging_treelist %})).
14178
14638
  *
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
14639
  */
14187
14640
  this.pageable = false;
14188
14641
  /**
14189
14642
  * If set to `true`, the user can use dedicated shortcuts to interact with the TreeList.
14190
14643
  * By default, navigation is disabled and the TreeList content is accessible in the normal tab sequence.
14644
+ * @default false
14191
14645
  */
14192
14646
  this.navigable = false;
14193
14647
  /**
@@ -14196,6 +14650,8 @@ class TreeListComponent {
14196
14650
  * Columns with `autoSize` set to `false` are excluded.
14197
14651
  * To dynamically update the column width to match the new content,
14198
14652
  * refer to [this example]({% slug resizing_columns_treelist %}).
14653
+ *
14654
+ * @default false
14199
14655
  */
14200
14656
  this.autoSize = false;
14201
14657
  /**
@@ -14227,7 +14683,9 @@ class TreeListComponent {
14227
14683
  /**
14228
14684
  * Specifies if the header of the treelist will be hidden. The header is visible by default.
14229
14685
  *
14230
- * > The header includes column headers and the [filter row]({% slug filtering_treelist %}#toc-filter-row).
14686
+ * The header includes column headers and the [filter row]({% slug filtering_treelist %}#toc-filter-row).
14687
+ *
14688
+ * @default false
14231
14689
  */
14232
14690
  this.hideHeader = false;
14233
14691
  /**
@@ -14336,6 +14794,11 @@ class TreeListComponent {
14336
14794
  * Used by the expand directive and the Gantt component.
14337
14795
  */
14338
14796
  this.expandStateChange = new EventEmitter();
14797
+ /**
14798
+ * Fires when the user drops the dragged row and reordering is performed.
14799
+ * Emits the [RowReorderEvent]({% slug api_treelist_rowreorderevent %}).
14800
+ */
14801
+ this.rowReorder = new EventEmitter();
14339
14802
  /**
14340
14803
  * @hidden
14341
14804
  */
@@ -14365,6 +14828,11 @@ class TreeListComponent {
14365
14828
  this._sort = new Array();
14366
14829
  this._skip = 0;
14367
14830
  this.cachedWindowWidth = 0;
14831
+ this._rowReorderable = false;
14832
+ /**
14833
+ * @hidden
14834
+ */
14835
+ this.treeListData = () => { return this.view; };
14368
14836
  this._rowClass = () => null;
14369
14837
  validatePackage(packageMetadata);
14370
14838
  this.subscriptions.add(localization.changes.subscribe(({ rtl }) => {
@@ -14427,6 +14895,11 @@ class TreeListComponent {
14427
14895
  this.view.clear();
14428
14896
  this.expandStateChange.emit(args);
14429
14897
  }
14898
+ if (this.rowReorderable) {
14899
+ this.ngZone.onStable.pipe(take(2)).subscribe(() => {
14900
+ this.notifyReorderContainers();
14901
+ });
14902
+ }
14430
14903
  }));
14431
14904
  this.subscriptions.add(this.view.childrenLoaded.subscribe(() => {
14432
14905
  this.changeDetectorRef.detectChanges();
@@ -14532,48 +15005,6 @@ class TreeListComponent {
14532
15005
  /**
14533
15006
  * Defines a function that is executed for every data row in the component.
14534
15007
  *
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
15008
  */
14578
15009
  set rowClass(fn) {
14579
15010
  if (typeof fn !== 'function') {
@@ -14617,7 +15048,7 @@ class TreeListComponent {
14617
15048
  this.selectionService.settings = value;
14618
15049
  }
14619
15050
  /**
14620
- * Provides a callback that determines if the given row / cell is selected.
15051
+ * Provides a callback that determines if the given row or cell is selected.
14621
15052
  */
14622
15053
  set isSelected(value) {
14623
15054
  if (typeof value !== 'function' && isDevMode()) {
@@ -14625,6 +15056,26 @@ class TreeListComponent {
14625
15056
  }
14626
15057
  this.selectionService.isSelected = value;
14627
15058
  }
15059
+ /**
15060
+ * Enables the [row reordering]({% slug treelist_row_reordering %}) of the TreeList.
15061
+ * @default false
15062
+ */
15063
+ set rowReorderable(value) {
15064
+ this._rowReorderable = value;
15065
+ if (value) {
15066
+ this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
15067
+ hasObservers(this.rowReorder) && this.ngZone.run(() => {
15068
+ this.rowReorder.emit(args);
15069
+ });
15070
+ });
15071
+ }
15072
+ else {
15073
+ this.rowReorderSubscription?.unsubscribe();
15074
+ }
15075
+ }
15076
+ get rowReorderable() {
15077
+ return this._rowReorderable;
15078
+ }
14628
15079
  /**
14629
15080
  * @hidden
14630
15081
  */
@@ -14886,6 +15337,30 @@ class TreeListComponent {
14886
15337
  this.ngZone = null;
14887
15338
  clearTimeout(this.pageChangeTimeout);
14888
15339
  }
15340
+ /**
15341
+ * @hidden
15342
+ */
15343
+ handleReorderEvents(ev, evType) {
15344
+ this.rowReorderService[evType](ev);
15345
+ }
15346
+ /**
15347
+ * @hidden
15348
+ */
15349
+ getDefaultSelectors(type) {
15350
+ return this.rowReorderService.defaultSelectors[type];
15351
+ }
15352
+ /**
15353
+ * @hidden
15354
+ */
15355
+ getHintSettings(setting) {
15356
+ return this.rowReorderService[setting];
15357
+ }
15358
+ /**
15359
+ * @hidden
15360
+ */
15361
+ get hintText() {
15362
+ return this.rowReorderService.getDefaultHintText(this.columnList, this.view);
15363
+ }
14889
15364
  /**
14890
15365
  * @hidden
14891
15366
  */
@@ -15027,7 +15502,7 @@ class TreeListComponent {
15027
15502
  * Exports the TreeList element to a Drawing [`Group`]({% slug api_kendo-drawing_group %}) by using the `kendo-treelist-pdf` component options.
15028
15503
  * ([see example]({% slug pdfexport_treelist %}#toc-exporting-multiple-treelists-to-the-same-pdf)).
15029
15504
  *
15030
- * @return {Promise} - A promise that will be resolved with the Drawing `Group`.
15505
+ * @return {Promise} A promise that will be resolved with the Drawing `Group`.
15031
15506
  */
15032
15507
  drawPDF() {
15033
15508
  const promise = createPromise();
@@ -15045,64 +15520,8 @@ class TreeListComponent {
15045
15520
  * so that the whole text fits without wrapping. This method expects the TreeList
15046
15521
  * to be resizable (set `resizable` to `true`).
15047
15522
  * 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>
15072
- *
15073
- * <kendo-treelist-column
15074
- * field="ProductName"
15075
- * title="Product Name">
15076
- * </kendo-treelist-column>
15077
- * </kendo-treelist-column-group>
15523
+ * after the TreeList is already populated with data. [See example](slug:resizing_columns_treelist#toc-auto-fitting-the-content).
15078
15524
  *
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
15525
  */
15107
15526
  autoFitColumn(column) {
15108
15527
  this.columnResizingService.autoFit(column);
@@ -15112,69 +15531,7 @@ class TreeListComponent {
15112
15531
  * If no columns are specified, `autoFitColumns` is applied to all columns.
15113
15532
  *
15114
15533
  * 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
- * ```
15534
+ * [See example](slug:resizing_columns_treelist#toc-auto-fitting-the-content).
15178
15535
  */
15179
15536
  autoFitColumns(columns = this.columns) {
15180
15537
  let cols;
@@ -15247,9 +15604,9 @@ class TreeListComponent {
15247
15604
  /**
15248
15605
  * Focuses the cell with the specified row and column index.
15249
15606
  *
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.
15607
+ * The row index is based on the logical structure of the TreeList and does not correspond to the data item index.
15608
+ * The row indexing is absolute and does not change with paging.
15609
+ * Header rows are included, starting at index 0.
15253
15610
  *
15254
15611
  * If the TreeList is configured for scrolling, including virtual scrolling, the scroll position will be updated.
15255
15612
  * If the row is not present on the current page, the method will have no effect.
@@ -15300,67 +15657,6 @@ class TreeListComponent {
15300
15657
  * @param {number} destIndex - The new position of the column.
15301
15658
  * @param {ColumnReorderConfig} options - Additional options.
15302
15659
  *
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
15660
  */
15365
15661
  reorderColumn(source, destIndex, options = { before: false }) {
15366
15662
  const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
@@ -15577,6 +15873,7 @@ class TreeListComponent {
15577
15873
  this.closeCell();
15578
15874
  this.cancelCell();
15579
15875
  this.dataStateChange.emit(x);
15876
+ this.rowReorderable && this.notifyReorderContainers();
15580
15877
  }));
15581
15878
  }
15582
15879
  attachEditHandlers() {
@@ -15841,9 +16138,13 @@ class TreeListComponent {
15841
16138
  this.columns.reset(columns.toArray());
15842
16139
  this.columns.notifyOnChanges();
15843
16140
  }
16141
+ notifyReorderContainers() {
16142
+ this.dragTargetContainer?.notify();
16143
+ this.dropTargetContainer?.notify();
16144
+ }
15844
16145
  }
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: [
16146
+ 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 });
16147
+ 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
16148
  BrowserSupportService,
15848
16149
  LocalizationService,
15849
16150
  ColumnInfoService,
@@ -15884,8 +16185,9 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
15884
16185
  provide: ExpandableTreeComponent,
15885
16186
  useExisting: forwardRef(() => TreeListComponent)
15886
16187
  },
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: `
16188
+ ContextService,
16189
+ RowReorderService
16190
+ ], 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
16191
  <ng-container kendoTreeListLocalizedMessages
15890
16192
 
15891
16193
  i18n-noRecords="kendo.treelist.noRecords|The label visible in the TreeList when there are no records"
@@ -15921,6 +16223,12 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
15921
16223
  i18n-pagerItemsTotal="kendo.treelist.pagerItemsTotal|The label after the total items count in the TreeList pager"
15922
16224
  pagerItemsTotal="items total"
15923
16225
 
16226
+ i18n-filterCellOperatorLabel="kendo.treelist.filterCellOperatorLabel|The label of the filter cell operators dropdown"
16227
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
16228
+
16229
+ i18n-booleanFilterCellLabel="kendo.treelist.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
16230
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
16231
+
15924
16232
  i18n-filter="kendo.treelist.filter|The label of the filter cell or icon"
15925
16233
  filter="Filter"
15926
16234
 
@@ -16002,6 +16310,9 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16002
16310
  i18n-loading="kendo.treelist.loading|The loading text"
16003
16311
  loading="Loading"
16004
16312
 
16313
+ i18n-filterInputLabel="kendo.treelist.filterInputLabel|The label of the filter row and menu inputs"
16314
+ filterInputLabel="{{ '{columnName} Filter' }}"
16315
+
16005
16316
  i18n-columnMenu="kendo.treelist.columnMenu|The title of the column menu icon"
16006
16317
  columnMenu="Column Menu"
16007
16318
 
@@ -16046,6 +16357,15 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16046
16357
 
16047
16358
  i18n-bottomToolbarLabel="kendo.treelist.bottomToolbarLabel|The label of the TreeList bottom toolbar"
16048
16359
  bottomToolbarLabel="Bottom toolbar"
16360
+
16361
+ i18n-dragRowHandleLabel="kendo.treelist.dragRowHandleLabel|The label for the TreeList drag row handle"
16362
+ dragRowHandleLabel="Drag row"
16363
+
16364
+ i18n-selectRowCheckboxLabel="kendo.treelist.selectRowCheckboxLabel|The label for the select row checkbox"
16365
+ selectRowCheckboxLabel="Select row"
16366
+
16367
+ i18n-selectAllRowsCheckboxLabel="kendo.treelist.selectAllRowsCheckboxLabel|The label for the select all rows checkbox"
16368
+ selectAllRowsCheckboxLabel="Select all rows"
16049
16369
  >
16050
16370
  </ng-container>
16051
16371
  <kendo-treelist-toolbar
@@ -16063,7 +16383,24 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16063
16383
  [attr.aria-rowcount]="ariaRowCount"
16064
16384
  [attr.aria-colcount]="ariaColCount"
16065
16385
  [attr.aria-multiselectable]="ariaMultiselectable"
16066
- [attr.aria-label]="ariaLabel">
16386
+ [attr.aria-label]="ariaLabel"
16387
+ kendoDragTargetContainer
16388
+ kendoDropTargetContainer
16389
+ mode="manual"
16390
+ [dragDisabled]="!rowReorderable"
16391
+ [dropDisabled]="!rowReorderable"
16392
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
16393
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
16394
+ [dragHandle]="getDefaultSelectors('handle')"
16395
+ [hint]="{hintTemplate: defaultHint}"
16396
+ (onPress)="handleReorderEvents($event, 'press')"
16397
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
16398
+ (onDrag)="handleReorderEvents($event, 'drag')"
16399
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
16400
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
16401
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
16402
+ (onDrop)="handleReorderEvents($event, 'drop')"
16403
+ [dragData]="treeListData">
16067
16404
  <ng-template [ngIf]="isScrollable">
16068
16405
  <div *ngIf="!hideHeader"
16069
16406
  class="k-grid-header"
@@ -16079,8 +16416,8 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16079
16416
  role="presentation"
16080
16417
  [style.width.px]="lockedWidth"
16081
16418
  class="k-grid-header-table k-table k-table-md">
16082
- <colgroup kendoTreeListColGroup
16083
- role="presentation"
16419
+ <colgroup
16420
+ kendoTreeListColGroup
16084
16421
  [columns]="$any(lockedLeafColumns)">
16085
16422
  </colgroup>
16086
16423
  <thead kendoTreeListHeader
@@ -16107,8 +16444,8 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16107
16444
  [style.width.px]="nonLockedWidth"
16108
16445
  [virtualColumns]="virtualColumns"
16109
16446
  class="k-grid-header-table k-table k-table-md">
16110
- <colgroup kendoTreeListColGroup
16111
- role="presentation"
16447
+ <colgroup
16448
+ kendoTreeListColGroup
16112
16449
  [columns]="headerLeafColumns">
16113
16450
  </colgroup>
16114
16451
  <thead kendoTreeListHeader
@@ -16150,17 +16487,18 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16150
16487
  [virtualColumns]="virtualColumns"
16151
16488
  [expandIcons]="expandIcons"
16152
16489
  (scrollBottom)="notifyScrollBottom()"
16153
- (contentScroll)="contentScroll.emit($event)"
16490
+ (contentScroll)="contentScroll.emit($event)"
16154
16491
  kendoDraggable
16155
16492
  kendoTreeListSelectionMarquee
16156
16493
  [enableDrag]="marqueeSelection">
16157
16494
  </kendo-treelist-list>
16158
16495
  </ng-template>
16159
16496
  <ng-template [ngIf]="!isScrollable">
16160
- <table
16497
+ <table
16161
16498
  class="k-table k-table-md k-grid-header-table"
16162
16499
  [style.table-layout]="resizable ? 'fixed' : null">
16163
- <colgroup kendoTreeListColGroup
16500
+ <colgroup
16501
+ kendoTreeListColGroup
16164
16502
  [columns]="$any(leafColumns)">
16165
16503
  </colgroup>
16166
16504
  <thead kendoTreeListHeader
@@ -16215,7 +16553,16 @@ TreeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
16215
16553
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
16216
16554
  [attr.aria-controls]="ariaRootId">
16217
16555
  </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 });
16556
+
16557
+ <ng-template #defaultHint>
16558
+ <kendo-icon-wrapper
16559
+ [name]="getHintSettings('hintIcon')"
16560
+ [svgIcon]="getHintSettings('hintSVGIcon')"
16561
+ innerCssClass="k-drag-status">
16562
+ </kendo-icon-wrapper>
16563
+ {{hintText}}
16564
+ </ng-template>
16565
+ `, 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
16566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListComponent, decorators: [{
16220
16567
  type: Component,
16221
16568
  args: [{
@@ -16263,7 +16610,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16263
16610
  provide: ExpandableTreeComponent,
16264
16611
  useExisting: forwardRef(() => TreeListComponent)
16265
16612
  },
16266
- ContextService
16613
+ ContextService,
16614
+ RowReorderService
16267
16615
  ],
16268
16616
  selector: 'kendo-treelist',
16269
16617
  template: `
@@ -16302,6 +16650,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16302
16650
  i18n-pagerItemsTotal="kendo.treelist.pagerItemsTotal|The label after the total items count in the TreeList pager"
16303
16651
  pagerItemsTotal="items total"
16304
16652
 
16653
+ i18n-filterCellOperatorLabel="kendo.treelist.filterCellOperatorLabel|The label of the filter cell operators dropdown"
16654
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
16655
+
16656
+ i18n-booleanFilterCellLabel="kendo.treelist.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
16657
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
16658
+
16305
16659
  i18n-filter="kendo.treelist.filter|The label of the filter cell or icon"
16306
16660
  filter="Filter"
16307
16661
 
@@ -16383,6 +16737,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16383
16737
  i18n-loading="kendo.treelist.loading|The loading text"
16384
16738
  loading="Loading"
16385
16739
 
16740
+ i18n-filterInputLabel="kendo.treelist.filterInputLabel|The label of the filter row and menu inputs"
16741
+ filterInputLabel="{{ '{columnName} Filter' }}"
16742
+
16386
16743
  i18n-columnMenu="kendo.treelist.columnMenu|The title of the column menu icon"
16387
16744
  columnMenu="Column Menu"
16388
16745
 
@@ -16427,6 +16784,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16427
16784
 
16428
16785
  i18n-bottomToolbarLabel="kendo.treelist.bottomToolbarLabel|The label of the TreeList bottom toolbar"
16429
16786
  bottomToolbarLabel="Bottom toolbar"
16787
+
16788
+ i18n-dragRowHandleLabel="kendo.treelist.dragRowHandleLabel|The label for the TreeList drag row handle"
16789
+ dragRowHandleLabel="Drag row"
16790
+
16791
+ i18n-selectRowCheckboxLabel="kendo.treelist.selectRowCheckboxLabel|The label for the select row checkbox"
16792
+ selectRowCheckboxLabel="Select row"
16793
+
16794
+ i18n-selectAllRowsCheckboxLabel="kendo.treelist.selectAllRowsCheckboxLabel|The label for the select all rows checkbox"
16795
+ selectAllRowsCheckboxLabel="Select all rows"
16430
16796
  >
16431
16797
  </ng-container>
16432
16798
  <kendo-treelist-toolbar
@@ -16444,7 +16810,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16444
16810
  [attr.aria-rowcount]="ariaRowCount"
16445
16811
  [attr.aria-colcount]="ariaColCount"
16446
16812
  [attr.aria-multiselectable]="ariaMultiselectable"
16447
- [attr.aria-label]="ariaLabel">
16813
+ [attr.aria-label]="ariaLabel"
16814
+ kendoDragTargetContainer
16815
+ kendoDropTargetContainer
16816
+ mode="manual"
16817
+ [dragDisabled]="!rowReorderable"
16818
+ [dropDisabled]="!rowReorderable"
16819
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
16820
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
16821
+ [dragHandle]="getDefaultSelectors('handle')"
16822
+ [hint]="{hintTemplate: defaultHint}"
16823
+ (onPress)="handleReorderEvents($event, 'press')"
16824
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
16825
+ (onDrag)="handleReorderEvents($event, 'drag')"
16826
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
16827
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
16828
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
16829
+ (onDrop)="handleReorderEvents($event, 'drop')"
16830
+ [dragData]="treeListData">
16448
16831
  <ng-template [ngIf]="isScrollable">
16449
16832
  <div *ngIf="!hideHeader"
16450
16833
  class="k-grid-header"
@@ -16460,8 +16843,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16460
16843
  role="presentation"
16461
16844
  [style.width.px]="lockedWidth"
16462
16845
  class="k-grid-header-table k-table k-table-md">
16463
- <colgroup kendoTreeListColGroup
16464
- role="presentation"
16846
+ <colgroup
16847
+ kendoTreeListColGroup
16465
16848
  [columns]="$any(lockedLeafColumns)">
16466
16849
  </colgroup>
16467
16850
  <thead kendoTreeListHeader
@@ -16488,8 +16871,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16488
16871
  [style.width.px]="nonLockedWidth"
16489
16872
  [virtualColumns]="virtualColumns"
16490
16873
  class="k-grid-header-table k-table k-table-md">
16491
- <colgroup kendoTreeListColGroup
16492
- role="presentation"
16874
+ <colgroup
16875
+ kendoTreeListColGroup
16493
16876
  [columns]="headerLeafColumns">
16494
16877
  </colgroup>
16495
16878
  <thead kendoTreeListHeader
@@ -16531,17 +16914,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16531
16914
  [virtualColumns]="virtualColumns"
16532
16915
  [expandIcons]="expandIcons"
16533
16916
  (scrollBottom)="notifyScrollBottom()"
16534
- (contentScroll)="contentScroll.emit($event)"
16917
+ (contentScroll)="contentScroll.emit($event)"
16535
16918
  kendoDraggable
16536
16919
  kendoTreeListSelectionMarquee
16537
16920
  [enableDrag]="marqueeSelection">
16538
16921
  </kendo-treelist-list>
16539
16922
  </ng-template>
16540
16923
  <ng-template [ngIf]="!isScrollable">
16541
- <table
16924
+ <table
16542
16925
  class="k-table k-table-md k-grid-header-table"
16543
16926
  [style.table-layout]="resizable ? 'fixed' : null">
16544
- <colgroup kendoTreeListColGroup
16927
+ <colgroup
16928
+ kendoTreeListColGroup
16545
16929
  [columns]="$any(leafColumns)">
16546
16930
  </colgroup>
16547
16931
  <thead kendoTreeListHeader
@@ -16596,9 +16980,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16596
16980
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
16597
16981
  [attr.aria-controls]="ariaRootId">
16598
16982
  </kendo-treelist-toolbar>
16983
+
16984
+ <ng-template #defaultHint>
16985
+ <kendo-icon-wrapper
16986
+ [name]="getHintSettings('hintIcon')"
16987
+ [svgIcon]="getHintSettings('hintSVGIcon')"
16988
+ innerCssClass="k-drag-status">
16989
+ </kendo-icon-wrapper>
16990
+ {{hintText}}
16991
+ </ng-template>
16599
16992
  `
16600
16993
  }]
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: [{
16994
+ }], 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
16995
  type: Input,
16603
16996
  args: ['aria-label']
16604
16997
  }], data: [{
@@ -16651,6 +17044,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16651
17044
  type: Input
16652
17045
  }], isSelected: [{
16653
17046
  type: Input
17047
+ }], rowReorderable: [{
17048
+ type: Input
16654
17049
  }], selectionChange: [{
16655
17050
  type: Output
16656
17051
  }], filterChange: [{
@@ -16699,6 +17094,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16699
17094
  args: ['collapse']
16700
17095
  }], expandStateChange: [{
16701
17096
  type: Output
17097
+ }], rowReorder: [{
17098
+ type: Output
16702
17099
  }], columnsRef: [{
16703
17100
  type: Input,
16704
17101
  args: ['columns']
@@ -16750,6 +17147,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16750
17147
  }], ariaRoot: [{
16751
17148
  type: ViewChild,
16752
17149
  args: ['ariaRoot', { static: true }]
17150
+ }], dragTargetContainer: [{
17151
+ type: ViewChild,
17152
+ args: [DragTargetContainerDirective]
17153
+ }], dropTargetContainer: [{
17154
+ type: ViewChild,
17155
+ args: [DropTargetContainerDirective]
16753
17156
  }], fetchChildren: [{
16754
17157
  type: Input
16755
17158
  }], hasChildren: [{
@@ -16760,7 +17163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16760
17163
 
16761
17164
  /**
16762
17165
  * Custom component messages override default component messages
16763
- * ([see example]({% slug globalization_treelist %}#toc-localization)).
17166
+ * ([see example](slug:globalization_treelist#toc-custom-messages)).
16764
17167
  */
16765
17168
  class CustomMessagesComponent extends Messages {
16766
17169
  constructor(service) {
@@ -16828,6 +17231,14 @@ class AutoCompleteFilterCellComponent extends BaseFilterCellComponent {
16828
17231
  get currentOperator() {
16829
17232
  return this.currentFilter ? this.currentFilter.operator : "contains";
16830
17233
  }
17234
+ /**
17235
+ * @hidden
17236
+ */
17237
+ get columnLabel() {
17238
+ const localizationMsg = this.localization.get('filterInputLabel') || '';
17239
+ const columnName = this.column.title || this.column.field;
17240
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
17241
+ }
16831
17242
  }
16832
17243
  AutoCompleteFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AutoCompleteFilterCellComponent, deps: [{ token: FilterService }, { token: ColumnComponent }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
16833
17244
  AutoCompleteFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AutoCompleteFilterCellComponent, selector: "kendo-treelist-autocomplete-filter-cell", inputs: { showOperators: "showOperators", column: "column", filter: "filter", data: "data", valueField: "valueField" }, usesInheritance: true, ngImport: i0, template: `
@@ -16839,11 +17250,12 @@ AutoCompleteFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
16839
17250
  <kendo-autocomplete
16840
17251
  kendoFilterInput
16841
17252
  [data]="data"
17253
+ [columnLabel]="columnLabel"
16842
17254
  [valueField]="valueField"
16843
17255
  [value]="currentFilter?.value">
16844
17256
  </kendo-autocomplete>
16845
17257
  </kendo-treelist-filter-wrapper-cell>
16846
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i3$1.AutoCompleteComponent, selector: "kendo-autocomplete", inputs: ["highlightFirst", "focusableId", "data", "value", "valueField", "placeholder", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "loading", "clearButton", "suggest", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoAutoComplete"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "value"] }] });
17258
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-treelist-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i3$1.AutoCompleteComponent, selector: "kendo-autocomplete", inputs: ["highlightFirst", "focusableId", "data", "value", "valueField", "placeholder", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "loading", "clearButton", "suggest", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoAutoComplete"] }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "column", "value"] }] });
16847
17259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AutoCompleteFilterCellComponent, decorators: [{
16848
17260
  type: Component,
16849
17261
  args: [{
@@ -16857,6 +17269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16857
17269
  <kendo-autocomplete
16858
17270
  kendoFilterInput
16859
17271
  [data]="data"
17272
+ [columnLabel]="columnLabel"
16860
17273
  [valueField]="valueField"
16861
17274
  [value]="currentFilter?.value">
16862
17275
  </kendo-autocomplete>
@@ -16876,7 +17289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16876
17289
  }] } });
16877
17290
 
16878
17291
  /**
16879
- * Represents the checkbox for selecting rows in the TreeList.
17292
+ * Represents the checkbox for selecting rows in the TreeList. [See example](slug:selection_treelist#toc-select-all-checkbox).
16880
17293
  */
16881
17294
  class CheckboxColumnComponent extends ColumnBase {
16882
17295
  constructor(parent) {
@@ -16927,6 +17340,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16927
17340
  args: [CellTemplateDirective, { static: false }]
16928
17341
  }] } });
16929
17342
 
17343
+ /**
17344
+ * Represents the drag handle for reordering rows in the TreeList.
17345
+ */
17346
+ class RowReorderColumnComponent extends ColumnBase {
17347
+ constructor(parent) {
17348
+ super(parent);
17349
+ this.parent = parent;
17350
+ /**
17351
+ * @hidden
17352
+ */
17353
+ this.isRowReorderColumn = true;
17354
+ }
17355
+ }
17356
+ 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 });
17357
+ RowReorderColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RowReorderColumnComponent, selector: "kendo-treelist-rowreorder-column", providers: [
17358
+ {
17359
+ provide: ColumnBase,
17360
+ useExisting: forwardRef(() => RowReorderColumnComponent)
17361
+ }
17362
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
17363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, decorators: [{
17364
+ type: Component,
17365
+ args: [{
17366
+ providers: [
17367
+ {
17368
+ provide: ColumnBase,
17369
+ useExisting: forwardRef(() => RowReorderColumnComponent)
17370
+ }
17371
+ ],
17372
+ selector: 'kendo-treelist-rowreorder-column',
17373
+ template: ``
17374
+ }]
17375
+ }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{
17376
+ type: SkipSelf
17377
+ }, {
17378
+ type: Host
17379
+ }, {
17380
+ type: Optional
17381
+ }] }]; } });
17382
+
16930
17383
  const exportedModules$3 = [
16931
17384
  ColumnComponent,
16932
17385
  ColumnGroupComponent,
@@ -16940,7 +17393,8 @@ const exportedModules$3 = [
16940
17393
  SpanColumnComponent,
16941
17394
  TableDirective,
16942
17395
  LoadingComponent,
16943
- CheckboxColumnComponent
17396
+ CheckboxColumnComponent,
17397
+ RowReorderColumnComponent
16944
17398
  ];
16945
17399
  /**
16946
17400
  * @hidden
@@ -16951,6 +17405,7 @@ class SharedModule {
16951
17405
  ColumnComponent,
16952
17406
  SpanColumnComponent,
16953
17407
  CheckboxColumnComponent,
17408
+ RowReorderColumnComponent,
16954
17409
  ColumnGroupComponent,
16955
17410
  FocusableDirective
16956
17411
  ];
@@ -16969,7 +17424,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
16969
17424
  SpanColumnComponent,
16970
17425
  TableDirective,
16971
17426
  LoadingComponent,
16972
- CheckboxColumnComponent], imports: [CommonModule, IconsModule], exports: [ColumnComponent,
17427
+ CheckboxColumnComponent,
17428
+ RowReorderColumnComponent], imports: [CommonModule, IconsModule], exports: [ColumnComponent,
16973
17429
  ColumnGroupComponent,
16974
17430
  LogicalCellDirective,
16975
17431
  LogicalRowDirective,
@@ -16981,7 +17437,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
16981
17437
  SpanColumnComponent,
16982
17438
  TableDirective,
16983
17439
  LoadingComponent,
16984
- CheckboxColumnComponent, DraggableModule, IconsModule] });
17440
+ CheckboxColumnComponent,
17441
+ RowReorderColumnComponent, DraggableModule, IconsModule] });
16985
17442
  SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, imports: [[CommonModule, IconsModule], DraggableModule, IconsModule] });
16986
17443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
16987
17444
  type: NgModule,
@@ -16994,10 +17451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16994
17451
 
16995
17452
  /**
16996
17453
  * 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)
17454
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17001
17455
  */
17002
17456
  class ContainsFilterOperatorComponent extends FilterOperatorBase {
17003
17457
  constructor(localization) { super("contains", localization); }
@@ -17025,10 +17479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17025
17479
 
17026
17480
  /**
17027
17481
  * 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)
17482
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17032
17483
  */
17033
17484
  class DoesNotContainFilterOperatorComponent extends FilterOperatorBase {
17034
17485
  constructor(localization) { super("doesnotcontain", localization); }
@@ -17056,10 +17507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17056
17507
 
17057
17508
  /**
17058
17509
  * 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)
17510
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17063
17511
  */
17064
17512
  class EndsWithFilterOperatorComponent extends FilterOperatorBase {
17065
17513
  constructor(localization) { super("endswith", localization); }
@@ -17087,10 +17535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17087
17535
 
17088
17536
  /**
17089
17537
  * 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)
17538
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17094
17539
  */
17095
17540
  class EqualFilterOperatorComponent extends FilterOperatorBase {
17096
17541
  constructor(localization) { super("eq", localization); }
@@ -17118,10 +17563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17118
17563
 
17119
17564
  /**
17120
17565
  * 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)
17566
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17125
17567
  */
17126
17568
  class IsEmptyFilterOperatorComponent extends FilterOperatorBase {
17127
17569
  constructor(localization) { super("isempty", localization); }
@@ -17149,10 +17591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17149
17591
 
17150
17592
  /**
17151
17593
  * 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)
17594
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17156
17595
  */
17157
17596
  class IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {
17158
17597
  constructor(localization) { super("isnotempty", localization); }
@@ -17180,10 +17619,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17180
17619
 
17181
17620
  /**
17182
17621
  * 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)
17622
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17187
17623
  */
17188
17624
  class IsNotNullFilterOperatorComponent extends FilterOperatorBase {
17189
17625
  constructor(localization) { super("isnotnull", localization); }
@@ -17211,10 +17647,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17211
17647
 
17212
17648
  /**
17213
17649
  * 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)
17650
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17218
17651
  */
17219
17652
  class IsNullFilterOperatorComponent extends FilterOperatorBase {
17220
17653
  constructor(localization) { super("isnull", localization); }
@@ -17242,10 +17675,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17242
17675
 
17243
17676
  /**
17244
17677
  * 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)
17678
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17249
17679
  */
17250
17680
  class NotEqualFilterOperatorComponent extends FilterOperatorBase {
17251
17681
  constructor(localization) { super("neq", localization); }
@@ -17273,10 +17703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17273
17703
 
17274
17704
  /**
17275
17705
  * 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)
17706
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17280
17707
  */
17281
17708
  class StartsWithFilterOperatorComponent extends FilterOperatorBase {
17282
17709
  constructor(localization) { super("startswith", localization); }
@@ -17304,10 +17731,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17304
17731
 
17305
17732
  /*
17306
17733
  * 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)
17734
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17311
17735
  */
17312
17736
  class GreaterFilterOperatorComponent extends FilterOperatorBase {
17313
17737
  constructor(localization) { super("gt", localization); }
@@ -17335,10 +17759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17335
17759
 
17336
17760
  /**
17337
17761
  * 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)
17762
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17342
17763
  */
17343
17764
  class GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {
17344
17765
  constructor(localization) { super("gte", localization); }
@@ -17364,12 +17785,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17364
17785
  }]
17365
17786
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17366
17787
 
17367
- /*
17788
+ /**
17368
17789
  * 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)
17790
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17373
17791
  */
17374
17792
  class LessFilterOperatorComponent extends FilterOperatorBase {
17375
17793
  constructor(localization) { super("lt", localization); }
@@ -17397,10 +17815,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17397
17815
 
17398
17816
  /*
17399
17817
  * 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)
17818
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17404
17819
  */
17405
17820
  class LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {
17406
17821
  constructor(localization) { super("lte", localization); }
@@ -17426,12 +17841,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17426
17841
  }]
17427
17842
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17428
17843
 
17429
- /*
17844
+ /**
17430
17845
  * 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)
17846
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17435
17847
  */
17436
17848
  class AfterFilterOperatorComponent extends FilterOperatorBase {
17437
17849
  constructor(localization) { super("after", localization); }
@@ -17466,12 +17878,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17466
17878
  }]
17467
17879
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17468
17880
 
17469
- /*
17881
+ /**
17470
17882
  * 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)
17883
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17475
17884
  */
17476
17885
  class AfterEqFilterOperatorComponent extends FilterOperatorBase {
17477
17886
  constructor(localization) { super("after-eq", localization); }
@@ -17506,12 +17915,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17506
17915
  }]
17507
17916
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17508
17917
 
17509
- /*
17918
+ /**
17510
17919
  * 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)
17920
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17515
17921
  */
17516
17922
  class BeforeEqFilterOperatorComponent extends FilterOperatorBase {
17517
17923
  constructor(localization) { super("before-eq", localization); }
@@ -17546,12 +17952,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17546
17952
  }]
17547
17953
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17548
17954
 
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)
17955
+ /**
17956
+ * Represents the `Less than` (**Is before**) date filter operator.
17957
+ * [See example](slug:builtinfiltertemplate_treelist#toc-setting-the-order-of-the-filter-operators).
17555
17958
  */
17556
17959
  class BeforeFilterOperatorComponent extends FilterOperatorBase {
17557
17960
  constructor(localization) { super("before", localization); }
@@ -17941,12 +18344,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17941
18344
  * Represents the component for selecting columns in the TreeList. To enable the user to show or hide columns,
17942
18345
  * add the component inside a [`ToolbarTemplate`]({% slug api_treelist_toolbartemplatedirective %}) directive.
17943
18346
  *
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 %}
18347
+ * @example
18348
+ * ```html
18349
+ * <kendo-treelist ...>
18350
+ * <ng-template kendoTreeListToolbarTemplate>
18351
+ * <kendo-treelist-column-chooser> </kendo-treelist-column-chooser>
18352
+ * </ng-template>
18353
+ * </kendo-treelist>
18354
+ * ```
17950
18355
  */
17951
18356
  class ColumnChooserComponent {
17952
18357
  constructor(localization, columnInfoService, popupService, ngZone, renderer, changeDetector) {
@@ -17958,10 +18363,12 @@ class ColumnChooserComponent {
17958
18363
  this.changeDetector = changeDetector;
17959
18364
  /**
17960
18365
  * Specifies if the changes in the visibility of the column will be immediately applied.
18366
+ * @default false
17961
18367
  */
17962
18368
  this.autoSync = false;
17963
18369
  /**
17964
18370
  * Specifies if all columns can be hidden.
18371
+ * @default true
17965
18372
  */
17966
18373
  this.allowHideAll = true;
17967
18374
  this.columnsIcon = columnsIcon;
@@ -18192,30 +18599,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18192
18599
 
18193
18600
  /**
18194
18601
  * 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
18602
+ * column inside an `<ng-template>` tag. For more information and examples on using the passed fields
18197
18603
  * and the command directives, refer to the article on
18198
18604
  * [editing the TreeList in Angular Reactive Forms]({% slug editing_reactive_forms_treelist %}).
18199
18605
  *
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
18606
  * Usually, the template contains CRUD command directives such as:
18208
18607
  * - [`EditCommandDirective`]({% slug api_treelist_editcommanddirective %})
18209
18608
  * - [`RemoveCommandDirective`]({% slug api_treelist_removecommanddirective %})
18210
18609
  * - [`CancelCommandDirective`]({% slug api_treelist_cancelcommanddirective %})
18211
18610
  * - [`SaveCommandDirective`]({% slug api_treelist_savecommanddirective %})
18212
18611
  *
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 %}
18612
+ * @example
18613
+ * ```html
18614
+ * <kendo-treelist ...>
18615
+ * <kendo-treelist-column field="ProductID"></kendo-treelist-column>
18616
+ * <kendo-treelist-command-column title="command" >
18617
+ * <ng-template kendoTreeListCellTemplate>
18618
+ * <button kendoTreeListEditCommand class="k-primary">Edit</button>
18619
+ * <button kendoTreeListRemoveCommand>Remove</button>
18620
+ * </ng-template>
18621
+ * </kendo-treelist-command-column>
18622
+ * </kendo-treelist>
18623
+ * ```
18219
18624
  */
18220
18625
  class CommandColumnComponent extends ColumnBase {
18221
18626
  constructor(parent, optionChanges) {
@@ -18301,7 +18706,7 @@ BaseCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18301
18706
  </span>
18302
18707
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18303
18708
  <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"] }] });
18709
+ `, 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
18710
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseCommandDirective, decorators: [{
18306
18711
  type: Component,
18307
18712
  args: [{
@@ -18339,7 +18744,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18339
18744
  *
18340
18745
  * @example
18341
18746
  * ```html
18342
- * <kendo-treelist>
18747
+ * <kendo-treelist ...>
18343
18748
  * <kendo-treelist-command-column title="command">
18344
18749
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18345
18750
  * <button [kendoTreeListEditCommand]="cellContext">Edit</button>
@@ -18373,7 +18778,7 @@ EditCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18373
18778
  </span>
18374
18779
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18375
18780
  <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"] }] });
18781
+ `, 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
18782
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EditCommandDirective, decorators: [{
18378
18783
  type: Component,
18379
18784
  args: [{
@@ -18411,7 +18816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18411
18816
  *
18412
18817
  * @example
18413
18818
  * ```html
18414
- * <kendo-treelist>
18819
+ * <kendo-treelist ...>
18415
18820
  * <kendo-treelist-command-column title="command">
18416
18821
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18417
18822
  * <button [kendoTreeListCancelCommand]="cellContext">Cancel changes</button>
@@ -18445,7 +18850,7 @@ CancelCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
18445
18850
  </span>
18446
18851
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18447
18852
  <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"] }] });
18853
+ `, 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
18854
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CancelCommandDirective, decorators: [{
18450
18855
  type: Component,
18451
18856
  args: [{
@@ -18483,7 +18888,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18483
18888
  *
18484
18889
  * @example
18485
18890
  * ```html
18486
- * <kendo-treelist>
18891
+ * <kendo-treelist ...>
18487
18892
  * <kendo-treelist-command-column title="command">
18488
18893
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18489
18894
  * <button [kendoTreeListSaveCommand]="cellContext">Save changes</button>
@@ -18516,7 +18921,7 @@ SaveCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
18516
18921
  </span>
18517
18922
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18518
18923
  <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"] }] });
18924
+ `, 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
18925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SaveCommandDirective, decorators: [{
18521
18926
  type: Component,
18522
18927
  args: [{
@@ -18554,7 +18959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18554
18959
  *
18555
18960
  * @example
18556
18961
  * ```html
18557
- * <kendo-treelist>
18962
+ * <kendo-treelist ...>
18558
18963
  * <kendo-treelist-command-column title="command">
18559
18964
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18560
18965
  * <button [kendoTreeListRemoveCommand]="cellContext">Remove row</button>
@@ -18587,7 +18992,7 @@ RemoveCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
18587
18992
  </span>
18588
18993
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18589
18994
  <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"] }] });
18995
+ `, 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
18996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveCommandDirective, decorators: [{
18592
18997
  type: Component,
18593
18998
  args: [{
@@ -18628,7 +19033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18628
19033
  *
18629
19034
  * @example
18630
19035
  * ```html
18631
- * <kendo-treelist>
19036
+ * <kendo-treelist ...>
18632
19037
  * <kendo-treelist-command-column title="command">
18633
19038
  * <ng-template kendoTreeListCellTemplate let-cellContext="cellContext">
18634
19039
  * <button [kendoTreeListAddCommand]="cellContext" class="k-primary">Edit</button>
@@ -18659,7 +19064,7 @@ AddCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
18659
19064
  </span>
18660
19065
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
18661
19066
  <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"] }] });
19067
+ `, 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
19068
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AddCommandDirective, decorators: [{
18664
19069
  type: Component,
18665
19070
  args: [{
@@ -19158,8 +19563,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19158
19563
  }] } });
19159
19564
 
19160
19565
  class BaseBindingDirective {
19161
- constructor(component) {
19566
+ constructor(component, rowReorderService) {
19162
19567
  this.component = component;
19568
+ this.rowReorderService = rowReorderService;
19163
19569
  this.state = {};
19164
19570
  this.cache = new Map();
19165
19571
  this.originalData = [];
@@ -19192,6 +19598,8 @@ class BaseBindingDirective {
19192
19598
  this.applyState(this.state);
19193
19599
  this.subscriptions.add(this.component.dataStateChange
19194
19600
  .subscribe(this.onStateChange.bind(this)));
19601
+ this.component.rowReorderable && this.subscriptions.add(this.rowReorderService.rowReorder
19602
+ .subscribe(this.onRowReorder.bind(this)));
19195
19603
  }
19196
19604
  /**
19197
19605
  * @hidden
@@ -19232,6 +19640,7 @@ class BaseBindingDirective {
19232
19640
  this.cache.clear();
19233
19641
  this.component.data = this.fetchChildren();
19234
19642
  }
19643
+ onRowReorder(_event) { }
19235
19644
  applyState({ sort, filter }) {
19236
19645
  this.sort = sort;
19237
19646
  this.filter = filter;
@@ -19300,12 +19709,12 @@ class BaseBindingDirective {
19300
19709
  this.dataChanged = true;
19301
19710
  }
19302
19711
  }
19303
- BaseBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseBindingDirective, deps: [{ token: DataBoundTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });
19712
+ 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
19713
  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
19714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseBindingDirective, decorators: [{
19306
19715
  type: Directive,
19307
19716
  args: [{}]
19308
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { sort: [{
19717
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService }]; }, propDecorators: { sort: [{
19309
19718
  type: Input
19310
19719
  }], filter: [{
19311
19720
  type: Input
@@ -19355,6 +19764,53 @@ class HierarchyEditService extends LocalEditService {
19355
19764
  }
19356
19765
  }
19357
19766
 
19767
+ /**
19768
+ * @hidden
19769
+ */
19770
+ class HierarchicalRowReorderService extends RowReorderService {
19771
+ isOverChild(targetItem) {
19772
+ const { draggedRows } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
19773
+ const draggedItem = draggedRows[0].dataItem;
19774
+ const hasChildren = isPresent(draggedItem[this.childrenField]) && draggedItem[this.childrenField].length > 0;
19775
+ if (!hasChildren) {
19776
+ return false;
19777
+ }
19778
+ if (targetItem && draggedItem.hasOwnProperty(this.childrenField)) {
19779
+ if (draggedItem[this.childrenField].includes(targetItem)) {
19780
+ return true;
19781
+ }
19782
+ const parent = findParent$1(this.data, targetItem, this.childrenField);
19783
+ if (parent) {
19784
+ return this.isOverChild(parent);
19785
+ }
19786
+ }
19787
+ return false;
19788
+ }
19789
+ reorderRows(ev, collection, field) {
19790
+ const draggedItem = ev.draggedRows[0].dataItem;
19791
+ const dropTargetItem = ev.dropTargetRow.dataItem;
19792
+ const draggedItemParent = findParent$1(collection, draggedItem, field);
19793
+ const dropTargetParent = findParent$1(collection, dropTargetItem, field);
19794
+ const draggedItemIdx = draggedItemParent ? draggedItemParent[field].indexOf(draggedItem) : collection.indexOf(draggedItem);
19795
+ let dropTargetItemIdx = dropTargetParent ? dropTargetParent[field].indexOf(dropTargetItem) : collection.indexOf(dropTargetItem);
19796
+ if (ev.dropPosition === dropPosition.after && dropTargetItemIdx < draggedItemIdx) {
19797
+ dropTargetItemIdx++;
19798
+ }
19799
+ draggedItemParent ? draggedItemParent[field].splice(draggedItemIdx, 1) : collection.splice(draggedItemIdx, 1);
19800
+ if (ev.dropPosition !== dropPosition.over) {
19801
+ dropTargetParent ? dropTargetParent[field].splice(dropTargetItemIdx, 0, draggedItem) : collection.splice(dropTargetItemIdx, 0, draggedItem);
19802
+ }
19803
+ else {
19804
+ dropTargetItem[field].unshift(draggedItem);
19805
+ }
19806
+ }
19807
+ }
19808
+ HierarchicalRowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19809
+ HierarchicalRowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService });
19810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchicalRowReorderService, decorators: [{
19811
+ type: Injectable
19812
+ }] });
19813
+
19358
19814
  /**
19359
19815
  * A directive which binds the TreeList to a tree of objects.
19360
19816
  *
@@ -19363,12 +19819,16 @@ class HierarchyEditService extends LocalEditService {
19363
19819
  * and [filtering]({% slug filtering_treelist %}) ([more information and examples](slug:databinding_treelist#toc-binding-to-hierarchical-data)).
19364
19820
  */
19365
19821
  class HierarchyBindingDirective extends BaseBindingDirective {
19366
- constructor(component) {
19822
+ constructor(component, rowReorderService) {
19367
19823
  super(component);
19368
19824
  this.component = component;
19825
+ this.rowReorderService = rowReorderService;
19369
19826
  this.childrenGetter = getter('items');
19370
19827
  this.childrenSetter = setter('items');
19371
19828
  component.localEditService = new HierarchyEditService(this);
19829
+ if (this.rowReorderService) {
19830
+ this.rowReorderService.bindingDirective = this;
19831
+ }
19372
19832
  }
19373
19833
  /**
19374
19834
  * The name of the field which holds the child data items of the node.
@@ -19376,23 +19836,56 @@ class HierarchyBindingDirective extends BaseBindingDirective {
19376
19836
  set childrenField(value) {
19377
19837
  this.childrenGetter = getter(value);
19378
19838
  this.childrenSetter = setter(value);
19839
+ this._childrenField = value;
19840
+ }
19841
+ get childrenField() {
19842
+ return this._childrenField;
19379
19843
  }
19844
+ /**
19845
+ * @hidden
19846
+ */
19380
19847
  getChildren(item) {
19381
19848
  return item ? this.childrenGetter(item) || [] : this.originalData;
19382
19849
  }
19383
19850
  itemKey(item) {
19384
19851
  return item;
19385
19852
  }
19853
+ onRowReorder(ev) {
19854
+ if (ev.dropPosition === 'forbidden') {
19855
+ return;
19856
+ }
19857
+ const dropTargetItem = ev.dropTargetRow.dataItem;
19858
+ if (ev.dropPosition === 'over') {
19859
+ if (!dropTargetItem.hasOwnProperty(this.childrenField)) {
19860
+ dropTargetItem[this.childrenField] = [];
19861
+ }
19862
+ }
19863
+ this.rowReorderService.reorderRows(ev, this.originalData, this.childrenField);
19864
+ this.rebind();
19865
+ }
19386
19866
  }
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 });
19867
+ 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 });
19868
+ HierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: HierarchyBindingDirective, selector: "[kendoTreeListHierarchyBinding]", inputs: { childrenField: "childrenField", data: ["kendoTreeListHierarchyBinding", "data"] }, providers: [
19869
+ {
19870
+ provide: RowReorderService,
19871
+ useClass: HierarchicalRowReorderService
19872
+ }
19873
+ ], exportAs: ["kendoTreeListHierarchyBinding"], usesInheritance: true, ngImport: i0 });
19389
19874
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HierarchyBindingDirective, decorators: [{
19390
19875
  type: Directive,
19391
19876
  args: [{
19392
19877
  exportAs: 'kendoTreeListHierarchyBinding',
19393
- selector: '[kendoTreeListHierarchyBinding]'
19878
+ selector: '[kendoTreeListHierarchyBinding]',
19879
+ providers: [
19880
+ {
19881
+ provide: RowReorderService,
19882
+ useClass: HierarchicalRowReorderService
19883
+ }
19884
+ ]
19394
19885
  }]
19395
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { childrenField: [{
19886
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService, decorators: [{
19887
+ type: Optional
19888
+ }] }]; }, propDecorators: { childrenField: [{
19396
19889
  type: Input
19397
19890
  }], data: [{
19398
19891
  type: Input,
@@ -19443,6 +19936,47 @@ class FlatEditService extends LocalEditService {
19443
19936
  }
19444
19937
  }
19445
19938
 
19939
+ /**
19940
+ * @hidden
19941
+ */
19942
+ class FlatRowReorderService extends RowReorderService {
19943
+ isOverChild(targetItem) {
19944
+ const { draggedRows } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
19945
+ const draggedItem = draggedRows[0].dataItem;
19946
+ const hasParent = isPresent(targetItem[this.parentIdField]);
19947
+ const sameParents = draggedItem[this.parentIdField] === targetItem[this.parentIdField];
19948
+ if (!hasParent || sameParents) {
19949
+ return false;
19950
+ }
19951
+ if (targetItem && targetItem.hasOwnProperty(this.parentIdField)) {
19952
+ if (draggedItem[this.idField] === targetItem[this.parentIdField]) {
19953
+ return true;
19954
+ }
19955
+ const parent = this.data.find(i => i[this.idField] === targetItem[this.parentIdField]);
19956
+ if (parent) {
19957
+ return this.isOverChild(parent);
19958
+ }
19959
+ }
19960
+ }
19961
+ reorderRows(ev, collection) {
19962
+ const { draggedRows, dropTargetRow } = ev;
19963
+ const draggedDataItem = draggedRows[0].dataItem;
19964
+ const dropTargetDataItem = dropTargetRow.dataItem;
19965
+ let dropTargetIdx = collection.indexOf(dropTargetDataItem);
19966
+ const draggedItemIdx = collection.indexOf(draggedDataItem);
19967
+ collection.splice(draggedItemIdx, 1);
19968
+ if (ev.dropPosition === 'after' && dropTargetIdx < draggedItemIdx) {
19969
+ dropTargetIdx++;
19970
+ }
19971
+ collection.splice(dropTargetIdx, 0, draggedDataItem);
19972
+ }
19973
+ }
19974
+ FlatRowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19975
+ FlatRowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService });
19976
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatRowReorderService, decorators: [{
19977
+ type: Injectable
19978
+ }] });
19979
+
19446
19980
  const ROOT_ID = null;
19447
19981
  /**
19448
19982
  * A directive which binds the TreeList to an array of objects by using
@@ -19453,14 +19987,18 @@ const ROOT_ID = null;
19453
19987
  * and [filtering]({% slug filtering_treelist %}) ([more information and examples]({% slug databinding_treelist %})).
19454
19988
  */
19455
19989
  class FlatBindingDirective extends BaseBindingDirective {
19456
- constructor(component) {
19990
+ constructor(component, rowReorderService) {
19457
19991
  super(component);
19458
19992
  this.component = component;
19993
+ this.rowReorderService = rowReorderService;
19459
19994
  this.idGetter = getter('id');
19460
19995
  this.idSetter = setter('id');
19461
19996
  this.parentIdGetter = getter('parentId');
19462
19997
  this.parentIdSetter = setter('parentId');
19463
19998
  component.localEditService = new FlatEditService(this);
19999
+ if (this.rowReorderService) {
20000
+ this.rowReorderService.bindingDirective = this;
20001
+ }
19464
20002
  }
19465
20003
  /**
19466
20004
  * The name of the field which contains the identifier of the parent node.
@@ -19468,6 +20006,10 @@ class FlatBindingDirective extends BaseBindingDirective {
19468
20006
  set parentIdField(value) {
19469
20007
  this.parentIdGetter = getter(value);
19470
20008
  this.parentIdSetter = setter(value);
20009
+ this._parentIdField = value;
20010
+ }
20011
+ get parentIdField() {
20012
+ return this._parentIdField;
19471
20013
  }
19472
20014
  /**
19473
20015
  * The name of the field which contains the unique identifier of the node.
@@ -19475,7 +20017,14 @@ class FlatBindingDirective extends BaseBindingDirective {
19475
20017
  set idField(value) {
19476
20018
  this.idGetter = getter(value);
19477
20019
  this.idSetter = setter(value);
20020
+ this._idField = value;
20021
+ }
20022
+ get idField() {
20023
+ return this._idField;
19478
20024
  }
20025
+ /**
20026
+ * @hidden
20027
+ */
19479
20028
  getChildren(item) {
19480
20029
  const id = this.itemKey(item);
19481
20030
  const children = id === ROOT_ID ?
@@ -19486,16 +20035,48 @@ class FlatBindingDirective extends BaseBindingDirective {
19486
20035
  itemKey(item) {
19487
20036
  return item ? this.idGetter(item) : ROOT_ID;
19488
20037
  }
20038
+ onRowReorder(ev) {
20039
+ if (ev.dropPosition === 'forbidden') {
20040
+ return;
20041
+ }
20042
+ const draggedItem = ev.draggedRows[0].dataItem;
20043
+ const dropTargetItem = ev.dropTargetRow.dataItem;
20044
+ if (ev.dropPosition === 'over') {
20045
+ const dropItemId = this.itemKey(dropTargetItem);
20046
+ if (draggedItem[this.parentIdField] !== dropItemId) {
20047
+ draggedItem[this.parentIdField] = dropItemId;
20048
+ }
20049
+ }
20050
+ else {
20051
+ const dropItemParentId = dropTargetItem[this.parentIdField];
20052
+ draggedItem[this.parentIdField] = dropItemParentId;
20053
+ this.rowReorderService.reorderRows(ev, this.originalData);
20054
+ }
20055
+ this.rebind();
20056
+ }
19489
20057
  }
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 });
20058
+ 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 });
20059
+ 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: [
20060
+ {
20061
+ provide: RowReorderService,
20062
+ useClass: FlatRowReorderService
20063
+ }
20064
+ ], exportAs: ["kendoTreeListFlatBinding"], usesInheritance: true, ngImport: i0 });
19492
20065
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatBindingDirective, decorators: [{
19493
20066
  type: Directive,
19494
20067
  args: [{
19495
20068
  exportAs: 'kendoTreeListFlatBinding',
19496
- selector: '[kendoTreeListFlatBinding]'
20069
+ selector: '[kendoTreeListFlatBinding]',
20070
+ providers: [
20071
+ {
20072
+ provide: RowReorderService,
20073
+ useClass: FlatRowReorderService
20074
+ }
20075
+ ]
19497
20076
  }]
19498
- }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }]; }, propDecorators: { parentIdField: [{
20077
+ }], ctorParameters: function () { return [{ type: DataBoundTreeComponent }, { type: RowReorderService, decorators: [{
20078
+ type: Optional
20079
+ }] }]; }, propDecorators: { parentIdField: [{
19499
20080
  type: Input
19500
20081
  }], idField: [{
19501
20082
  type: Input
@@ -19786,7 +20367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19786
20367
  * Represents the Kendo UI TreeListSpacer component for Angular.
19787
20368
  * Used to give additional white space between the Pager inner elements,
19788
20369
  * and provides a way for customizing the spacer width.
19789
- * It can also be used in any flex container within the TreeList.
20370
+ * 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
20371
  */
19791
20372
  class TreeListSpacerComponent {
19792
20373
  constructor() {
@@ -19907,7 +20488,8 @@ TreeListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
19907
20488
  RowFilterModule,
19908
20489
  FilterMenuModule,
19909
20490
  ResizeSensorModule,
19910
- ColumnMenuModule], exports: [TreeListComponent,
20491
+ ColumnMenuModule,
20492
+ DragAndDropModule$1], exports: [TreeListComponent,
19911
20493
  ToolbarTemplateDirective,
19912
20494
  ToolbarComponent,
19913
20495
  TreeListSpacerComponent,
@@ -19919,7 +20501,7 @@ TreeListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
19919
20501
  FlatBindingDirective,
19920
20502
  ExpandableDirective,
19921
20503
  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] });
20504
+ 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
20505
  TreeListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListModule, imports: [[
19924
20506
  CommonModule,
19925
20507
  SharedModule,
@@ -19929,7 +20511,8 @@ TreeListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
19929
20511
  RowFilterModule,
19930
20512
  FilterMenuModule,
19931
20513
  ResizeSensorModule,
19932
- ColumnMenuModule
20514
+ ColumnMenuModule,
20515
+ DragAndDropModule$1
19933
20516
  ]] });
19934
20517
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeListModule, decorators: [{
19935
20518
  type: NgModule,
@@ -19945,11 +20528,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19945
20528
  RowFilterModule,
19946
20529
  FilterMenuModule,
19947
20530
  ResizeSensorModule,
19948
- ColumnMenuModule
20531
+ ColumnMenuModule,
20532
+ DragAndDropModule$1
19949
20533
  ]
19950
20534
  }]
19951
20535
  }] });
19952
20536
 
20537
+ /**
20538
+ * Represents the Kendo UI PDFMargin component for Angular.
20539
+ * The supported units are:
20540
+ * `"mm"`
20541
+ * `"cm"`
20542
+ * `"in"`
20543
+ * `"pt"` (default).
20544
+ * Numbers are considered to be points (`"pt"`).
20545
+ */
19953
20546
  class PDFMarginComponent extends PDFExportMarginComponent {
19954
20547
  }
19955
20548
  PDFMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PDFMarginComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -20377,7 +20970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20377
20970
  *
20378
20971
  * @example
20379
20972
  * ```html
20380
- * <kendo-treelist>
20973
+ * <kendo-treelist ...>
20381
20974
  * <ng-template kendoTreeListToolbarTemplate>
20382
20975
  * <button kendoTreeListPDFCommand>Export to PDF</button>
20383
20976
  * </ng-template>
@@ -20417,7 +21010,7 @@ PDFCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
20417
21010
  </span>
20418
21011
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
20419
21012
  <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"] }] });
21013
+ `, 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
21014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PDFCommandDirective, decorators: [{
20422
21015
  type: Component,
20423
21016
  args: [{
@@ -20718,7 +21311,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20718
21311
  *
20719
21312
  * @example
20720
21313
  * ```html
20721
- * <kendo-treelist>
21314
+ * <kendo-treelist ...>
20722
21315
  * <ng-template kendoTreeListToolbarTemplate>
20723
21316
  * <button kendoTreeListExcelCommand>Export to PDF</button>
20724
21317
  * </ng-template>
@@ -20758,7 +21351,7 @@ ExcelCommandDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
20758
21351
  </span>
20759
21352
  <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
20760
21353
  <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"] }] });
21354
+ `, 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
21355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExcelCommandDirective, decorators: [{
20763
21356
  type: Component,
20764
21357
  args: [{
@@ -20822,5 +21415,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20822
21415
  * Generated bundle index. Do not edit.
20823
21416
  */
20824
21417
 
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 };
21418
+ 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
21419