@progress/kendo-angular-treeview 17.0.0-develop.9 → 17.0.1-develop.1

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 (104) hide show
  1. package/README.md +30 -17
  2. package/check-mode.d.ts +1 -1
  3. package/check.directive.d.ts +1 -1
  4. package/checkbox/checked-state.d.ts +1 -1
  5. package/disable.directive.d.ts +1 -1
  6. package/drag-and-drop/drag-and-drop-editing.directive.d.ts +1 -1
  7. package/drag-and-drop/drag-and-drop.directive.d.ts +1 -1
  8. package/{esm2020 → esm2022}/check.directive.mjs +48 -27
  9. package/{esm2020 → esm2022}/data-bound-component.mjs +3 -3
  10. package/{esm2020 → esm2022}/data-change-notification.service.mjs +1 -3
  11. package/{esm2020 → esm2022}/disable.directive.mjs +18 -12
  12. package/{esm2020 → esm2022}/drag-and-drop/drag-and-drop-editing.directive.mjs +10 -9
  13. package/{esm2020 → esm2022}/drag-and-drop/drag-and-drop.directive.mjs +73 -52
  14. package/{esm2020 → esm2022}/drag-and-drop/drag-clue/drag-clue-template.directive.mjs +4 -3
  15. package/{esm2020 → esm2022}/drag-and-drop/drag-clue/drag-clue.component.mjs +30 -9
  16. package/{esm2020 → esm2022}/drag-and-drop/drag-clue/drag-clue.service.mjs +6 -3
  17. package/{esm2020 → esm2022}/drag-and-drop/drop-hint/drop-hint-template.directive.mjs +4 -3
  18. package/{esm2020 → esm2022}/drag-and-drop/drop-hint/drop-hint.component.mjs +24 -7
  19. package/{esm2020 → esm2022}/drag-and-drop/drop-hint/drop-hint.service.mjs +4 -3
  20. package/{esm2020 → esm2022}/drag-and-drop/editing-services/drag-and-drop-asset.service.mjs +4 -3
  21. package/{esm2020 → esm2022}/drag-and-drop/editing-services/flat-editing.service.mjs +2 -0
  22. package/{esm2020 → esm2022}/drag-and-drop/editing-services/hierarchy-editing.service.mjs +2 -0
  23. package/{esm2020 → esm2022}/drag-and-drop/models/preventable-event.mjs +1 -3
  24. package/{esm2020 → esm2022}/drag-and-drop/models/treeitem-drag-event.mjs +12 -0
  25. package/{esm2020 → esm2022}/drag-and-drop/models/treeitem-drag-start-event.mjs +8 -0
  26. package/{esm2020 → esm2022}/drag-and-drop/models/treeitem-drop-event.mjs +28 -4
  27. package/{esm2020 → esm2022}/expand-state.service.mjs +4 -6
  28. package/{esm2020 → esm2022}/expand.directive.mjs +67 -54
  29. package/{esm2020 → esm2022}/expandable-component.mjs +3 -3
  30. package/{esm2020 → esm2022}/filtering-base.mjs +13 -8
  31. package/{esm2020 → esm2022}/flat-binding.directive.mjs +26 -16
  32. package/{esm2020 → esm2022}/hierarchy-binding.directive.mjs +19 -15
  33. package/{esm2020 → esm2022}/index-builder.service.mjs +4 -6
  34. package/{esm2020 → esm2022}/load-more/load-more-button-template.directive.mjs +4 -3
  35. package/{esm2020 → esm2022}/load-more/load-more.directive.mjs +38 -20
  36. package/{esm2020 → esm2022}/loading-indicator.directive.mjs +14 -9
  37. package/{esm2020 → esm2022}/loading-notification.service.mjs +4 -6
  38. package/{esm2020 → esm2022}/localization/custom-messages.component.mjs +9 -8
  39. package/{esm2020 → esm2022}/localization/localized-messages.directive.mjs +9 -8
  40. package/{esm2020 → esm2022}/localization/messages.mjs +7 -3
  41. package/{esm2020 → esm2022}/navigation/navigation-model.mjs +2 -4
  42. package/{esm2020 → esm2022}/navigation/navigation.service.mjs +38 -36
  43. package/{esm2020 → esm2022}/node-children.service.mjs +4 -6
  44. package/{esm2020 → esm2022}/node-template.directive.mjs +4 -3
  45. package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
  46. package/{esm2020 → esm2022}/selection/select.directive.mjs +45 -25
  47. package/{esm2020 → esm2022}/selection/selection.service.mjs +5 -6
  48. package/{esm2020 → esm2022}/treeview-group.component.mjs +86 -56
  49. package/{esm2020 → esm2022}/treeview-item-content.directive.mjs +12 -6
  50. package/{esm2020 → esm2022}/treeview-item.directive.mjs +37 -21
  51. package/{esm2020 → esm2022}/treeview-lookup.service.mjs +4 -6
  52. package/{esm2020 → esm2022}/treeview.component.mjs +253 -194
  53. package/{esm2020 → esm2022}/treeview.module.mjs +12 -12
  54. package/expand.directive.d.ts +1 -1
  55. package/{fesm2020 → fesm2022}/progress-kendo-angular-treeview.mjs +1015 -694
  56. package/filtering-base.d.ts +1 -1
  57. package/flat-binding.directive.d.ts +1 -1
  58. package/hierarchy-binding.directive.d.ts +1 -1
  59. package/load-more/load-more.directive.d.ts +1 -1
  60. package/loading-indicator.directive.d.ts +1 -1
  61. package/localization/messages.d.ts +1 -1
  62. package/package.json +15 -21
  63. package/schematics/ngAdd/index.js +5 -5
  64. package/selection/select.directive.d.ts +1 -1
  65. package/selection/selection-mode.d.ts +1 -1
  66. package/size.d.ts +1 -1
  67. package/treeview-filter-settings.d.ts +1 -1
  68. package/treeview-group.component.d.ts +1 -1
  69. package/treeview-item-content.directive.d.ts +1 -1
  70. package/treeview-item.directive.d.ts +1 -1
  71. package/treeview.component.d.ts +1 -1
  72. package/fesm2015/progress-kendo-angular-treeview.mjs +0 -5545
  73. /package/{esm2020 → esm2022}/check-mode.mjs +0 -0
  74. /package/{esm2020 → esm2022}/checkable-settings.mjs +0 -0
  75. /package/{esm2020 → esm2022}/checkbox/checked-state.mjs +0 -0
  76. /package/{esm2020 → esm2022}/default-callbacks.mjs +0 -0
  77. /package/{esm2020 → esm2022}/directives.mjs +0 -0
  78. /package/{esm2020 → esm2022}/drag-and-drop/drag-and-drop-utils.mjs +0 -0
  79. /package/{esm2020 → esm2022}/drag-and-drop/models/drop-action.mjs +0 -0
  80. /package/{esm2020 → esm2022}/drag-and-drop/models/drop-position.mjs +0 -0
  81. /package/{esm2020 → esm2022}/drag-and-drop/models/editing-service.mjs +0 -0
  82. /package/{esm2020 → esm2022}/drag-and-drop/models/scroll-direction.mjs +0 -0
  83. /package/{esm2020 → esm2022}/drag-and-drop/models/scroll-settings.mjs +0 -0
  84. /package/{esm2020 → esm2022}/drag-and-drop/models/tree-item-filter-state.mjs +0 -0
  85. /package/{esm2020 → esm2022}/drag-and-drop/models/treeitem-add-remove-args.mjs +0 -0
  86. /package/{esm2020 → esm2022}/drag-and-drop/models.mjs +0 -0
  87. /package/{esm2020 → esm2022}/filter-expand-settings.interface.mjs +0 -0
  88. /package/{esm2020 → esm2022}/filter-state.interface.mjs +0 -0
  89. /package/{esm2020 → esm2022}/funcs.mjs +0 -0
  90. /package/{esm2020 → esm2022}/index.mjs +0 -0
  91. /package/{esm2020 → esm2022}/load-more/load-more-request-args.mjs +0 -0
  92. /package/{esm2020 → esm2022}/load-more/load-more-utils.mjs +0 -0
  93. /package/{esm2020 → esm2022}/load-more/load-more.service.mjs +0 -0
  94. /package/{esm2020 → esm2022}/navigation/navigation-item.interface.mjs +0 -0
  95. /package/{esm2020 → esm2022}/navigation/navigation-state.interface.mjs +0 -0
  96. /package/{esm2020 → esm2022}/node-click-event.interface.mjs +0 -0
  97. /package/{esm2020 → esm2022}/progress-kendo-angular-treeview.mjs +0 -0
  98. /package/{esm2020 → esm2022}/selection/selectable-settings.mjs +0 -0
  99. /package/{esm2020 → esm2022}/selection/selection-mode.mjs +0 -0
  100. /package/{esm2020 → esm2022}/size.mjs +0 -0
  101. /package/{esm2020 → esm2022}/treeitem-lookup.interface.mjs +0 -0
  102. /package/{esm2020 → esm2022}/treeitem.interface.mjs +0 -0
  103. /package/{esm2020 → esm2022}/treeview-filter-settings.mjs +0 -0
  104. /package/{esm2020 → esm2022}/utils.mjs +0 -0
@@ -9,19 +9,35 @@ import * as i0 from "@angular/core";
9
9
  * @hidden
10
10
  */
11
11
  export class DropHintComponent {
12
+ changeDetectorRef;
13
+ hostClass = true;
14
+ /**
15
+ * Defines the drag hint content template.
16
+ */
17
+ template;
18
+ position = 'fixed';
19
+ pointerEvents = 'none';
20
+ /**
21
+ * The attempted operation according to the current drop target.
22
+ */
23
+ action;
24
+ /**
25
+ * The look-up info for the currently dragged item.
26
+ */
27
+ sourceItem;
28
+ /**
29
+ * The look-up info for the destination item.
30
+ */
31
+ destinationItem;
12
32
  constructor(changeDetectorRef) {
13
33
  this.changeDetectorRef = changeDetectorRef;
14
- this.hostClass = true;
15
- this.position = 'fixed';
16
- this.pointerEvents = 'none';
17
34
  }
18
35
  // exposed as a public method that can be called from outside as the component uses `OnPush` strategy
19
36
  detectChanges() {
20
37
  this.changeDetectorRef.detectChanges();
21
38
  }
22
- }
23
- DropHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropHintComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
24
- DropHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DropHintComponent, isStandalone: true, selector: "kendo-treeview-drop-hint", host: { properties: { "class.k-drop-hint-container": "this.hostClass", "style.position": "this.position", "style.pointer-events": "this.pointerEvents" } }, ngImport: i0, template: `
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropHintComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
40
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropHintComponent, isStandalone: true, selector: "kendo-treeview-drop-hint", host: { properties: { "class.k-drop-hint-container": "this.hostClass", "style.position": "this.position", "style.pointer-events": "this.pointerEvents" } }, ngImport: i0, template: `
25
41
  <div
26
42
  *ngIf="!template"
27
43
  class="k-drop-hint k-drop-hint-h"
@@ -41,7 +57,8 @@ DropHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
41
57
  >
42
58
  <ng-template>
43
59
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropHintComponent, decorators: [{
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropHintComponent, decorators: [{
45
62
  type: Component,
46
63
  args: [{
47
64
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -11,6 +11,7 @@ import * as i0 from "@angular/core";
11
11
  * @hidden
12
12
  */
13
13
  export class DropHintService extends DragAndDropAssetService {
14
+ componentFactoryResolver;
14
15
  constructor(componentFactoryResolver) {
15
16
  super();
16
17
  this.componentFactoryResolver = componentFactoryResolver;
@@ -35,9 +36,9 @@ export class DropHintService extends DragAndDropAssetService {
35
36
  dropHint.destinationItem = destinationItem;
36
37
  dropHint.detectChanges();
37
38
  }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropHintService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropHintService });
38
41
  }
39
- DropHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropHintService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
40
- DropHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropHintService });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropHintService, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropHintService, decorators: [{
42
43
  type: Injectable
43
44
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });
@@ -21,6 +21,7 @@ export class DragAndDropAssetService {
21
21
  get element() {
22
22
  return this.componentRef.location.nativeElement;
23
23
  }
24
+ _componentRef;
24
25
  ngOnDestroy() {
25
26
  if (!isPresent(this._componentRef)) {
26
27
  return;
@@ -39,9 +40,9 @@ export class DragAndDropAssetService {
39
40
  this.element.style.left = `${left + offset}px`;
40
41
  this.element.style.top = `${top + offset}px`;
41
42
  }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropAssetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropAssetService });
42
45
  }
43
- DragAndDropAssetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DragAndDropAssetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
- DragAndDropAssetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DragAndDropAssetService });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DragAndDropAssetService, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropAssetService, decorators: [{
46
47
  type: Injectable
47
48
  }] });
@@ -12,6 +12,8 @@ import { buildTreeIndex, getDataItem, isPresent } from '../../utils';
12
12
  * @hidden
13
13
  */
14
14
  export class FlatEditingService {
15
+ flatBinding;
16
+ movedItemNewIndex;
15
17
  constructor(flatBinding) {
16
18
  this.flatBinding = flatBinding;
17
19
  }
@@ -11,6 +11,8 @@ import { isPresent, getDataItem, buildTreeIndex } from '../../utils';
11
11
  * @hidden
12
12
  */
13
13
  export class HierarchyEditingService {
14
+ hierarchyBinding;
15
+ movedItemNewIndex;
14
16
  constructor(hierarchyBinding) {
15
17
  this.hierarchyBinding = hierarchyBinding;
16
18
  }
@@ -6,9 +6,7 @@
6
6
  * @hidden
7
7
  */
8
8
  export class PreventableEvent {
9
- constructor() {
10
- this.prevented = false;
11
- }
9
+ prevented = false;
12
10
  /**
13
11
  * Prevents the default action for a specified event.
14
12
  * In this way, the source component suppresses the built-in behavior that follows the event.
@@ -9,4 +9,16 @@
9
9
  export class TreeItemDragEvent {
10
10
  /** @hidden */
11
11
  constructor() { }
12
+ /**
13
+ * The look-up info for the dragged item.
14
+ */
15
+ sourceItem;
16
+ /**
17
+ * The look-up info for the item that the dragged node is placed over if there is such.
18
+ */
19
+ destinationItem;
20
+ /**
21
+ * The original pointer event holding details about the current pointer position.
22
+ */
23
+ originalEvent;
12
24
  }
@@ -7,6 +7,14 @@ import { PreventableEvent } from './preventable-event';
7
7
  * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.
8
8
  */
9
9
  export class TreeItemDragStartEvent extends PreventableEvent {
10
+ /**
11
+ * The look-up info for the dragged item.
12
+ */
13
+ sourceItem;
14
+ /**
15
+ * The original pointer event holding details about the current pointer position.
16
+ */
17
+ originalEvent;
10
18
  /**
11
19
  * @hidden
12
20
  */
@@ -7,15 +7,39 @@ import { PreventableEvent } from './preventable-event';
7
7
  * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.
8
8
  */
9
9
  export class TreeItemDropEvent extends PreventableEvent {
10
+ /**
11
+ * A reference of the TreeView from which the dragged item originates.
12
+ */
13
+ sourceTree;
14
+ /**
15
+ * A reference of the TreeView onto which the dragged item is dropped.
16
+ */
17
+ destinationTree;
18
+ /**
19
+ * The look-up info for the dragged item.
20
+ */
21
+ sourceItem;
22
+ /**
23
+ * The look-up info for the item onto which the dragged item is dropped.
24
+ */
25
+ destinationItem;
26
+ /**
27
+ * Describes where the dragged item is dropped relative to the drop target item.
28
+ */
29
+ dropPosition;
30
+ /**
31
+ * The original pointer event holding details about the current pointer position.
32
+ */
33
+ originalEvent;
34
+ /**
35
+ * @hidden
36
+ */
37
+ isValid = true;
10
38
  /**
11
39
  * @hidden
12
40
  */
13
41
  constructor(initializer, originalEvent) {
14
42
  super();
15
- /**
16
- * @hidden
17
- */
18
- this.isValid = true;
19
43
  Object.assign(this, initializer);
20
44
  this.originalEvent = originalEvent;
21
45
  }
@@ -9,18 +9,16 @@ import * as i0 from "@angular/core";
9
9
  * @hidden
10
10
  */
11
11
  export class ExpandStateService {
12
- constructor() {
13
- this.changes = new Subject();
14
- }
12
+ changes = new Subject();
15
13
  expand(index, dataItem) {
16
14
  this.changes.next({ dataItem, index, expand: true });
17
15
  }
18
16
  collapse(index, dataItem) {
19
17
  this.changes.next({ dataItem, index, expand: false });
20
18
  }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
20
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandStateService });
21
21
  }
22
- ExpandStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
- ExpandStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandStateService });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandStateService, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandStateService, decorators: [{
25
23
  type: Injectable
26
24
  }] });
@@ -20,67 +20,54 @@ const DEFAULT_FILTER_EXPAND_SETTINGS = {
20
20
  * ([see example]({% slug expandedstate_treeview %})).
21
21
  */
22
22
  export class ExpandDirective {
23
- constructor(component) {
24
- this.component = component;
25
- /**
26
- * Whether or not to auto-expand the nodes leading from the root node to each filter result.
27
- * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.
28
- * @default false
29
- */
30
- this.expandOnFilter = false;
31
- /**
32
- * Fires when the `expandedKeys` collection was updated.
33
- */
34
- this.expandedKeysChange = new EventEmitter();
35
- this.subscriptions = new Subscription();
36
- /**
37
- * Reflectes the internal `expandedKeys` state.
38
- */
39
- this.state = new Set();
40
- this.originalExpandedKeys = new Set();
41
- this.isFiltered = false;
42
- /**
43
- * Fills array with the correct expand keys according to wrapper metadata.
44
- */
45
- this.updateExpandedNodes = (collection, node, autoExpandMatches) => {
46
- if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {
47
- collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));
48
- }
49
- if (isArrayWithAtLeastOneItem(node.children)) {
50
- node.children.forEach(child => {
51
- this.updateExpandedNodes(collection, child, autoExpandMatches);
52
- });
53
- }
54
- };
55
- /**
56
- * Fills array with the expand key of every node.
57
- */
58
- this.getEveryExpandKey = (collection, node) => {
59
- if (isArrayWithAtLeastOneItem(node.children)) {
60
- collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));
61
- }
62
- if (isArrayWithAtLeastOneItem(node.children)) {
63
- node.children.forEach(child => {
64
- this.getEveryExpandKey(collection, child);
65
- });
66
- }
67
- };
68
- this.subscriptions.add(merge(this.component.expand.pipe(map(e => ({ expand: true, ...e }))), this.component.collapse.pipe(map(e => ({ expand: false, ...e })))).subscribe(this.toggleExpand.bind(this)));
69
- if (this.component.filterStateChange) {
70
- this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));
71
- }
72
- this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({ dataItem, index }));
73
- }
23
+ component;
74
24
  /**
75
25
  * @hidden
76
26
  */
77
27
  set isExpanded(value) {
78
28
  this.component.isExpanded = value;
79
29
  }
30
+ /**
31
+ * Defines the item key that will be stored in the `expandedKeys` collection.
32
+ */
33
+ expandKey;
34
+ /**
35
+ * Whether or not to auto-expand the nodes leading from the root node to each filter result.
36
+ * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.
37
+ * @default false
38
+ */
39
+ expandOnFilter = false;
80
40
  get filterExpandSettings() {
81
41
  const settings = isBoolean(this.expandOnFilter) ? { enabled: this.expandOnFilter } : { ...this.expandOnFilter, enabled: true };
82
42
  return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);
83
43
  }
44
+ /**
45
+ * Fires when the `expandedKeys` collection was updated.
46
+ */
47
+ expandedKeysChange = new EventEmitter();
48
+ /**
49
+ * Defines the collection that will store the expanded keys.
50
+ */
51
+ expandedKeys;
52
+ subscriptions = new Subscription();
53
+ /**
54
+ * Reflectes the internal `expandedKeys` state.
55
+ */
56
+ state = new Set();
57
+ originalExpandedKeys = new Set();
58
+ isFiltered = false;
59
+ /**
60
+ * Holds the last emitted `expandedKeys` collection.
61
+ */
62
+ lastChange;
63
+ constructor(component) {
64
+ this.component = component;
65
+ this.subscriptions.add(merge(this.component.expand.pipe(map(e => ({ expand: true, ...e }))), this.component.collapse.pipe(map(e => ({ expand: false, ...e })))).subscribe(this.toggleExpand.bind(this)));
66
+ if (this.component.filterStateChange) {
67
+ this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));
68
+ }
69
+ this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({ dataItem, index }));
70
+ }
84
71
  ngOnChanges(changes) {
85
72
  if (isChanged('expandedKeys', changes, false) && changes['expandedKeys'].currentValue !== this.lastChange) {
86
73
  this.state = new Set(changes['expandedKeys'].currentValue);
@@ -172,14 +159,40 @@ export class ExpandDirective {
172
159
  }
173
160
  this.isFiltered = true;
174
161
  }
162
+ /**
163
+ * Fills array with the correct expand keys according to wrapper metadata.
164
+ */
165
+ updateExpandedNodes = (collection, node, autoExpandMatches) => {
166
+ if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {
167
+ collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));
168
+ }
169
+ if (isArrayWithAtLeastOneItem(node.children)) {
170
+ node.children.forEach(child => {
171
+ this.updateExpandedNodes(collection, child, autoExpandMatches);
172
+ });
173
+ }
174
+ };
175
+ /**
176
+ * Fills array with the expand key of every node.
177
+ */
178
+ getEveryExpandKey = (collection, node) => {
179
+ if (isArrayWithAtLeastOneItem(node.children)) {
180
+ collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));
181
+ }
182
+ if (isArrayWithAtLeastOneItem(node.children)) {
183
+ node.children.forEach(child => {
184
+ this.getEveryExpandKey(collection, child);
185
+ });
186
+ }
187
+ };
175
188
  notify() {
176
189
  this.lastChange = Array.from(this.state);
177
190
  this.expandedKeysChange.emit(this.lastChange);
178
191
  }
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandDirective, deps: [{ token: i1.ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });
193
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ExpandDirective, isStandalone: true, selector: "[kendoTreeViewExpandable]", inputs: { isExpanded: "isExpanded", expandKey: ["expandBy", "expandKey"], expandOnFilter: "expandOnFilter", expandedKeys: "expandedKeys" }, outputs: { expandedKeysChange: "expandedKeysChange" }, usesOnChanges: true, ngImport: i0 });
179
194
  }
180
- ExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandDirective, deps: [{ token: i1.ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });
181
- ExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ExpandDirective, isStandalone: true, selector: "[kendoTreeViewExpandable]", inputs: { isExpanded: "isExpanded", expandKey: ["expandBy", "expandKey"], expandOnFilter: "expandOnFilter", expandedKeys: "expandedKeys" }, outputs: { expandedKeysChange: "expandedKeysChange" }, usesOnChanges: true, ngImport: i0 });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandDirective, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandDirective, decorators: [{
183
196
  type: Directive,
184
197
  args: [{
185
198
  selector: '[kendoTreeViewExpandable]',
@@ -11,9 +11,9 @@ import * as i0 from "@angular/core";
11
11
  * the TreeView or the DropDownTree components.
12
12
  */
13
13
  export class ExpandableComponent {
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandableComponent });
14
16
  }
15
- ExpandableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
- ExpandableComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandableComponent });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExpandableComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandableComponent, decorators: [{
18
18
  type: Injectable
19
19
  }] });
@@ -12,11 +12,12 @@ import * as i1 from "./data-bound-component";
12
12
  * @hidden
13
13
  */
14
14
  export class FilteringBase {
15
- constructor(component) {
16
- this.component = component;
17
- this.visibleNodes = new Set();
18
- this._filterSettings = DEFAULT_FILTER_SETTINGS;
19
- }
15
+ component;
16
+ /**
17
+ * Stores the unfiltered nodes
18
+ */
19
+ filterData;
20
+ visibleNodes = new Set();
20
21
  /**
21
22
  * The settings which are applied when performing a filter on the component's data.
22
23
  */
@@ -29,12 +30,16 @@ export class FilteringBase {
29
30
  get filterSettings() {
30
31
  return this._filterSettings;
31
32
  }
33
+ _filterSettings = DEFAULT_FILTER_SETTINGS;
32
34
  /**
33
35
  * Applies a filter and changes the visibility of the component's nodes accordingly.
34
36
  */
35
37
  set filter(term) {
36
38
  this.handleFilterChange(term);
37
39
  }
40
+ constructor(component) {
41
+ this.component = component;
42
+ }
38
43
  /**
39
44
  * @hidden
40
45
  */
@@ -75,10 +80,10 @@ export class FilteringBase {
75
80
  }
76
81
  });
77
82
  }
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteringBase, deps: [{ token: i1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });
84
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilteringBase, inputs: { filterSettings: "filterSettings", filter: "filter" }, ngImport: i0 });
78
85
  }
79
- FilteringBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilteringBase, deps: [{ token: i1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });
80
- FilteringBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilteringBase, inputs: { filterSettings: "filterSettings", filter: "filter" }, ngImport: i0 });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilteringBase, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteringBase, decorators: [{
82
87
  type: Directive
83
88
  }], ctorParameters: function () { return [{ type: i1.DataBoundComponent }]; }, propDecorators: { filterSettings: [{
84
89
  type: Input
@@ -36,19 +36,7 @@ const mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent =
36
36
  * A directive which encapsulates the retrieval of the child nodes.
37
37
  */
38
38
  export class FlatDataBindingDirective extends FilteringBase {
39
- constructor(component) {
40
- super(component);
41
- this.component = component;
42
- /**
43
- * @hidden
44
- */
45
- this.loadOnDemand = true;
46
- /**
47
- * @hidden
48
- */
49
- this.originalData = [];
50
- this.component.isVisible = (node) => this.visibleNodes.has(node);
51
- }
39
+ component;
52
40
  /**
53
41
  * The nodes which will be displayed by the TreeView.
54
42
  */
@@ -59,6 +47,19 @@ export class FlatDataBindingDirective extends FilteringBase {
59
47
  get nodes() {
60
48
  return this._nodes;
61
49
  }
50
+ _nodes;
51
+ /**
52
+ * Represents the parent field whose value will be matched with the parent node.
53
+ */
54
+ parentIdField;
55
+ /**
56
+ * Represents the unique field which identifies a node.
57
+ */
58
+ idField;
59
+ /**
60
+ * @hidden
61
+ */
62
+ loadOnDemand = true;
62
63
  /**
63
64
  * @hidden
64
65
  * A callback which determines whether a TreeView node should be rendered as hidden.
@@ -66,6 +67,15 @@ export class FlatDataBindingDirective extends FilteringBase {
66
67
  set isVisible(fn) {
67
68
  this.component.isVisible = fn;
68
69
  }
70
+ /**
71
+ * @hidden
72
+ */
73
+ originalData = [];
74
+ constructor(component) {
75
+ super(component);
76
+ this.component = component;
77
+ this.component.isVisible = (node) => this.visibleNodes.has(node);
78
+ }
69
79
  /**
70
80
  * @hidden
71
81
  */
@@ -115,10 +125,10 @@ export class FlatDataBindingDirective extends FilteringBase {
115
125
  this.component.nodes = this.originalData.slice(0);
116
126
  }
117
127
  }
128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FlatDataBindingDirective, deps: [{ token: i1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });
129
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FlatDataBindingDirective, isStandalone: true, selector: "[kendoTreeViewFlatDataBinding]", inputs: { nodes: "nodes", parentIdField: "parentIdField", idField: "idField", loadOnDemand: "loadOnDemand", isVisible: "isVisible" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
118
130
  }
119
- FlatDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FlatDataBindingDirective, deps: [{ token: i1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });
120
- FlatDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FlatDataBindingDirective, isStandalone: true, selector: "[kendoTreeViewFlatDataBinding]", inputs: { nodes: "nodes", parentIdField: "parentIdField", idField: "idField", loadOnDemand: "loadOnDemand", isVisible: "isVisible" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FlatDataBindingDirective, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FlatDataBindingDirective, decorators: [{
122
132
  type: Directive,
123
133
  args: [{
124
134
  selector: "[kendoTreeViewFlatDataBinding]",
@@ -37,18 +37,8 @@ const mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIn
37
37
  * A directive which encapsulates the retrieval of child nodes.
38
38
  */
39
39
  export class HierarchyBindingDirective extends FilteringBase {
40
- constructor(component, dragAndDropDirective) {
41
- super(component);
42
- this.component = component;
43
- this.dragAndDropDirective = dragAndDropDirective;
44
- /**
45
- * @hidden
46
- */
47
- this.loadOnDemand = true;
48
- this.originalData = [];
49
- const shouldFilter = !isPresent(this.dragAndDropDirective);
50
- this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;
51
- }
40
+ component;
41
+ dragAndDropDirective;
52
42
  /**
53
43
  * The field name which holds the data items of the child component.
54
44
  */
@@ -74,6 +64,7 @@ export class HierarchyBindingDirective extends FilteringBase {
74
64
  get nodes() {
75
65
  return this._nodes;
76
66
  }
67
+ _nodes;
77
68
  /**
78
69
  * @hidden
79
70
  * A callback which determines whether a TreeView node should be rendered as hidden.
@@ -81,6 +72,19 @@ export class HierarchyBindingDirective extends FilteringBase {
81
72
  set isVisible(fn) {
82
73
  this.component.isVisible = fn;
83
74
  }
75
+ /**
76
+ * @hidden
77
+ */
78
+ loadOnDemand = true;
79
+ _childrenField;
80
+ originalData = [];
81
+ constructor(component, dragAndDropDirective) {
82
+ super(component);
83
+ this.component = component;
84
+ this.dragAndDropDirective = dragAndDropDirective;
85
+ const shouldFilter = !isPresent(this.dragAndDropDirective);
86
+ this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;
87
+ }
84
88
  ngOnInit() {
85
89
  if (isPresent(this.childrenField)) {
86
90
  this.component.children = item => of(getter(this.childrenField)(item));
@@ -119,10 +123,10 @@ export class HierarchyBindingDirective extends FilteringBase {
119
123
  this.filterData = mapToWrappers(values, this.childrenField) || [];
120
124
  this.updateVisibleNodes(this.filterData);
121
125
  }
126
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: i1.DataBoundComponent }, { token: i2.DragAndDropDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
127
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HierarchyBindingDirective, isStandalone: true, selector: "[kendoTreeViewHierarchyBinding]", inputs: { childrenField: "childrenField", nodes: "nodes", isVisible: "isVisible", loadOnDemand: "loadOnDemand" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
122
128
  }
123
- HierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: i1.DataBoundComponent }, { token: i2.DragAndDropDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
124
- HierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: HierarchyBindingDirective, isStandalone: true, selector: "[kendoTreeViewHierarchyBinding]", inputs: { childrenField: "childrenField", nodes: "nodes", isVisible: "isVisible", loadOnDemand: "loadOnDemand" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HierarchyBindingDirective, decorators: [{
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HierarchyBindingDirective, decorators: [{
126
130
  type: Directive,
127
131
  args: [{
128
132
  selector: '[kendoTreeViewHierarchyBinding]',
@@ -8,9 +8,7 @@ import * as i0 from "@angular/core";
8
8
  * @hidden
9
9
  */
10
10
  export class IndexBuilderService {
11
- constructor() {
12
- this.INDEX_SEPARATOR = '_';
13
- }
11
+ INDEX_SEPARATOR = '_';
14
12
  nodeIndex(index = '', parentIndex = '') {
15
13
  return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;
16
14
  }
@@ -27,9 +25,9 @@ export class IndexBuilderService {
27
25
  level(index) {
28
26
  return index.split(this.INDEX_SEPARATOR).length;
29
27
  }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IndexBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IndexBuilderService });
30
30
  }
31
- IndexBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IndexBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32
- IndexBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IndexBuilderService });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IndexBuilderService, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IndexBuilderService, decorators: [{
34
32
  type: Injectable
35
33
  }] });
@@ -15,13 +15,14 @@ import * as i0 from "@angular/core";
15
15
  * - `let-index="index"` (`string`)
16
16
  */
17
17
  export class LoadMoreButtonTemplateDirective {
18
+ templateRef;
18
19
  constructor(templateRef) {
19
20
  this.templateRef = templateRef;
20
21
  }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadMoreButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
23
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LoadMoreButtonTemplateDirective, isStandalone: true, selector: "[kendoTreeViewLoadMoreButtonTemplate]", ngImport: i0 });
21
24
  }
22
- LoadMoreButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LoadMoreButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
23
- LoadMoreButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: LoadMoreButtonTemplateDirective, isStandalone: true, selector: "[kendoTreeViewLoadMoreButtonTemplate]", ngImport: i0 });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LoadMoreButtonTemplateDirective, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadMoreButtonTemplateDirective, decorators: [{
25
26
  type: Directive,
26
27
  args: [{
27
28
  selector: '[kendoTreeViewLoadMoreButtonTemplate]',