@progress/kendo-angular-treeview 21.4.1 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/progress-kendo-angular-treeview.mjs +115 -115
- package/filtering-base.d.ts +1 -1
- package/localization/messages.d.ts +1 -1
- package/package.json +11 -19
- package/schematics/ngAdd/index.js +4 -4
- package/esm2022/check-mode.mjs +0 -5
- package/esm2022/check.directive.mjs +0 -334
- package/esm2022/checkable-settings.mjs +0 -5
- package/esm2022/checkbox/checked-state.mjs +0 -5
- package/esm2022/data-bound-component.mjs +0 -19
- package/esm2022/data-change-notification.service.mjs +0 -14
- package/esm2022/default-callbacks.mjs +0 -36
- package/esm2022/directives.mjs +0 -53
- package/esm2022/disable.directive.mjs +0 -83
- package/esm2022/drag-and-drop/drag-and-drop-editing.directive.mjs +0 -76
- package/esm2022/drag-and-drop/drag-and-drop-utils.mjs +0 -270
- package/esm2022/drag-and-drop/drag-and-drop.directive.mjs +0 -348
- package/esm2022/drag-and-drop/drag-clue/drag-clue-template.directive.mjs +0 -44
- package/esm2022/drag-and-drop/drag-clue/drag-clue.component.mjs +0 -132
- package/esm2022/drag-and-drop/drag-clue/drag-clue.service.mjs +0 -123
- package/esm2022/drag-and-drop/drop-hint/drop-hint-template.directive.mjs +0 -43
- package/esm2022/drag-and-drop/drop-hint/drop-hint.component.mjs +0 -102
- package/esm2022/drag-and-drop/drop-hint/drop-hint.service.mjs +0 -41
- package/esm2022/drag-and-drop/editing-services/drag-and-drop-asset.service.mjs +0 -48
- package/esm2022/drag-and-drop/editing-services/flat-editing.service.mjs +0 -141
- package/esm2022/drag-and-drop/editing-services/hierarchy-editing.service.mjs +0 -88
- package/esm2022/drag-and-drop/models/drop-action.mjs +0 -32
- package/esm2022/drag-and-drop/models/drop-position.mjs +0 -22
- package/esm2022/drag-and-drop/models/editing-service.mjs +0 -5
- package/esm2022/drag-and-drop/models/preventable-event.mjs +0 -25
- package/esm2022/drag-and-drop/models/scroll-direction.mjs +0 -12
- package/esm2022/drag-and-drop/models/scroll-settings.mjs +0 -5
- package/esm2022/drag-and-drop/models/tree-item-filter-state.mjs +0 -5
- package/esm2022/drag-and-drop/models/treeitem-add-remove-args.mjs +0 -5
- package/esm2022/drag-and-drop/models/treeitem-drag-event.mjs +0 -24
- package/esm2022/drag-and-drop/models/treeitem-drag-start-event.mjs +0 -25
- package/esm2022/drag-and-drop/models/treeitem-drop-event.mjs +0 -54
- package/esm2022/drag-and-drop/models.mjs +0 -14
- package/esm2022/expand-state.service.mjs +0 -24
- package/esm2022/expand.directive.mjs +0 -226
- package/esm2022/expandable-component.mjs +0 -19
- package/esm2022/filter-expand-settings.interface.mjs +0 -5
- package/esm2022/filter-state.interface.mjs +0 -5
- package/esm2022/filtering-base.mjs +0 -92
- package/esm2022/flat-binding.directive.mjs +0 -165
- package/esm2022/funcs.mjs +0 -9
- package/esm2022/hierarchy-binding.directive.mjs +0 -164
- package/esm2022/index-builder.service.mjs +0 -33
- package/esm2022/index.mjs +0 -31
- package/esm2022/load-more/load-more-button-template.directive.mjs +0 -41
- package/esm2022/load-more/load-more-request-args.mjs +0 -5
- package/esm2022/load-more/load-more-utils.mjs +0 -35
- package/esm2022/load-more/load-more.directive.mjs +0 -137
- package/esm2022/load-more/load-more.service.mjs +0 -5
- package/esm2022/loading-indicator.directive.mjs +0 -69
- package/esm2022/loading-notification.service.mjs +0 -21
- package/esm2022/localization/custom-messages.component.mjs +0 -54
- package/esm2022/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/localization/messages.mjs +0 -27
- package/esm2022/navigation/navigation-item.interface.mjs +0 -5
- package/esm2022/navigation/navigation-model.mjs +0 -152
- package/esm2022/navigation/navigation-state.interface.mjs +0 -5
- package/esm2022/navigation/navigation.service.mjs +0 -248
- package/esm2022/node-children.service.mjs +0 -21
- package/esm2022/node-click-event.interface.mjs +0 -5
- package/esm2022/node-template.directive.mjs +0 -45
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/progress-kendo-angular-treeview.mjs +0 -8
- package/esm2022/selection/select.directive.mjs +0 -174
- package/esm2022/selection/selectable-settings.mjs +0 -5
- package/esm2022/selection/selection-mode.mjs +0 -5
- package/esm2022/selection/selection.service.mjs +0 -33
- package/esm2022/size.mjs +0 -5
- package/esm2022/treeitem-lookup.interface.mjs +0 -5
- package/esm2022/treeitem.interface.mjs +0 -5
- package/esm2022/treeview-filter-settings.mjs +0 -12
- package/esm2022/treeview-group.component.mjs +0 -759
- package/esm2022/treeview-item-content.directive.mjs +0 -82
- package/esm2022/treeview-item.directive.mjs +0 -245
- package/esm2022/treeview-lookup.service.mjs +0 -89
- package/esm2022/treeview.component.mjs +0 -874
- package/esm2022/treeview.module.mjs +0 -74
- package/esm2022/utils.mjs +0 -301
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Directive, Input } from "@angular/core";
|
|
6
|
-
import { ComponentMessages } from "@progress/kendo-angular-l10n";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* @hidden
|
|
10
|
-
*/
|
|
11
|
-
export class TreeViewMessages extends ComponentMessages {
|
|
12
|
-
/**
|
|
13
|
-
* Sets the text for the `Load More` button title.
|
|
14
|
-
*/
|
|
15
|
-
loadMore;
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeViewMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
17
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TreeViewMessages, selector: "kendo-treeview-messages-base", inputs: { loadMore: "loadMore" }, usesInheritance: true, ngImport: i0 });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeViewMessages, decorators: [{
|
|
20
|
-
type: Directive,
|
|
21
|
-
args: [{
|
|
22
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
23
|
-
selector: 'kendo-treeview-messages-base'
|
|
24
|
-
}]
|
|
25
|
-
}], propDecorators: { loadMore: [{
|
|
26
|
-
type: Input
|
|
27
|
-
}] } });
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { IndexBuilderService } from '../index-builder.service';
|
|
6
|
-
import { isPresent } from '../utils';
|
|
7
|
-
const safe = node => (node || {});
|
|
8
|
-
const safeChildren = node => (safe(node).children || []);
|
|
9
|
-
const lastVisibleNode = (nodes) => {
|
|
10
|
-
if (!Array.isArray(nodes) || nodes.length === 0) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
const nodesCount = nodes.length;
|
|
14
|
-
const lastIndex = nodesCount - 1;
|
|
15
|
-
for (let index = lastIndex; index >= 0; index -= 1) {
|
|
16
|
-
const node = nodes[index];
|
|
17
|
-
if (node.visible) {
|
|
18
|
-
return node;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* @hidden
|
|
25
|
-
*/
|
|
26
|
-
export class NavigationModel {
|
|
27
|
-
ib = new IndexBuilderService();
|
|
28
|
-
nodes = [];
|
|
29
|
-
firstVisibleNode() {
|
|
30
|
-
return (this.nodes || []).find(node => node.visible);
|
|
31
|
-
}
|
|
32
|
-
lastVisibleNode() {
|
|
33
|
-
let node = lastVisibleNode(this.nodes);
|
|
34
|
-
while (isPresent(node) && safeChildren(node).length > 0) {
|
|
35
|
-
const children = safeChildren(node);
|
|
36
|
-
const lastVisibleChild = lastVisibleNode(children);
|
|
37
|
-
if (!isPresent(lastVisibleChild)) {
|
|
38
|
-
return node;
|
|
39
|
-
}
|
|
40
|
-
node = lastVisibleChild;
|
|
41
|
-
}
|
|
42
|
-
return node;
|
|
43
|
-
}
|
|
44
|
-
closestNode(index) {
|
|
45
|
-
const { prev } = safe(this.findNode(index));
|
|
46
|
-
const sibling = prev || this.firstVisibleNode();
|
|
47
|
-
return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;
|
|
48
|
-
}
|
|
49
|
-
firstFocusableNode() {
|
|
50
|
-
return this.nodes.find((node) => {
|
|
51
|
-
return !node.disabled && node.visible;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
findNode(index) {
|
|
55
|
-
return this.find(index, this.nodes);
|
|
56
|
-
}
|
|
57
|
-
findParent(index) {
|
|
58
|
-
const parentLevel = this.ib.level(index) - 1;
|
|
59
|
-
return this.findNode(this.ib.indexForLevel(index, parentLevel));
|
|
60
|
-
}
|
|
61
|
-
findVisibleChild(index) {
|
|
62
|
-
const node = this.findNode(index);
|
|
63
|
-
const children = safeChildren(node);
|
|
64
|
-
return children.find((child) => child.visible);
|
|
65
|
-
}
|
|
66
|
-
findVisiblePrev(item) {
|
|
67
|
-
const index = item.index;
|
|
68
|
-
const parent = this.findParent(index);
|
|
69
|
-
const levelIndex = this.ib.lastLevelIndex(index);
|
|
70
|
-
const prevNodes = this.container(parent).slice(0, levelIndex);
|
|
71
|
-
const prevNodesHidden = prevNodes.every(node => !node.visible);
|
|
72
|
-
if (levelIndex === 0 || prevNodesHidden) {
|
|
73
|
-
return parent;
|
|
74
|
-
}
|
|
75
|
-
const currentNode = this.findNode(index);
|
|
76
|
-
let prev = this.visibleSibling(currentNode, -1);
|
|
77
|
-
if (prev) {
|
|
78
|
-
let children = this.container(prev);
|
|
79
|
-
while (children.length > 0 && children.some(node => node.visible)) {
|
|
80
|
-
prev = lastVisibleNode(children);
|
|
81
|
-
children = this.container(prev);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return prev;
|
|
85
|
-
}
|
|
86
|
-
findVisibleNext(item) {
|
|
87
|
-
const children = this.container(item);
|
|
88
|
-
const hasVisibleChildren = children.some(child => child.visible);
|
|
89
|
-
if (children.length === 0 || !hasVisibleChildren) {
|
|
90
|
-
return this.visibleSibling(item, 1);
|
|
91
|
-
}
|
|
92
|
-
return children.find(child => child.visible);
|
|
93
|
-
}
|
|
94
|
-
registerItem(id, index, disabled, loadMoreButton = false, visible = true) {
|
|
95
|
-
const children = [];
|
|
96
|
-
const level = this.ib.level(index);
|
|
97
|
-
const parent = this.findParent(index);
|
|
98
|
-
if (parent || level === 1) {
|
|
99
|
-
const node = { id, children, index, parent, disabled, loadMoreButton, visible };
|
|
100
|
-
this.insert(node, parent);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
unregisterItem(id, index) {
|
|
104
|
-
const node = this.find(index, this.nodes);
|
|
105
|
-
if (!node || node.id !== id) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const children = this.container(node.parent);
|
|
109
|
-
children.splice(children.indexOf(node), 1);
|
|
110
|
-
}
|
|
111
|
-
childLevel(nodes) {
|
|
112
|
-
const children = nodes.filter(node => isPresent(node));
|
|
113
|
-
if (!children || !children.length) {
|
|
114
|
-
return 1;
|
|
115
|
-
}
|
|
116
|
-
return this.ib.level(children[0].index);
|
|
117
|
-
}
|
|
118
|
-
container(node) {
|
|
119
|
-
return node ? node.children : this.nodes;
|
|
120
|
-
}
|
|
121
|
-
find(index, nodes) {
|
|
122
|
-
const childLevel = this.childLevel(nodes);
|
|
123
|
-
const indexToMatch = this.ib.indexForLevel(index, childLevel);
|
|
124
|
-
const isLeaf = childLevel === this.ib.level(index);
|
|
125
|
-
const node = nodes.find(n => n && n.index === indexToMatch);
|
|
126
|
-
if (!node) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
return isLeaf ? node : this.find(index, node.children);
|
|
130
|
-
}
|
|
131
|
-
insert(node, parent) {
|
|
132
|
-
const nodes = this.container(parent);
|
|
133
|
-
nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);
|
|
134
|
-
}
|
|
135
|
-
visibleSibling(node, offset) {
|
|
136
|
-
if (!node) {
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
const parent = this.findParent(node.index);
|
|
140
|
-
const container = this.container(parent);
|
|
141
|
-
let nextItemIndex = container.indexOf(node) + offset;
|
|
142
|
-
let nextItem = container[nextItemIndex];
|
|
143
|
-
while (isPresent(nextItem)) {
|
|
144
|
-
if (nextItem.visible) {
|
|
145
|
-
return nextItem;
|
|
146
|
-
}
|
|
147
|
-
nextItemIndex += offset;
|
|
148
|
-
nextItem = container[nextItemIndex];
|
|
149
|
-
}
|
|
150
|
-
return this.visibleSibling(parent, offset);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
6
|
-
import { Keys, normalizeKeys } from '@progress/kendo-angular-common';
|
|
7
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
9
|
-
import { NavigationModel } from './navigation-model';
|
|
10
|
-
import { nodeIndex, isPresent } from '../utils';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
13
|
-
/**
|
|
14
|
-
* @hidden
|
|
15
|
-
*/
|
|
16
|
-
export class NavigationService {
|
|
17
|
-
localization;
|
|
18
|
-
expands = new Subject();
|
|
19
|
-
moves = new Subject();
|
|
20
|
-
checks = new Subject();
|
|
21
|
-
selects = new Subject();
|
|
22
|
-
deselectAllButCurrentItem = new Subject();
|
|
23
|
-
loadMore = new Subject();
|
|
24
|
-
navigable = true;
|
|
25
|
-
selection = 'single';
|
|
26
|
-
isTreeViewActive = false;
|
|
27
|
-
get model() {
|
|
28
|
-
return this._model;
|
|
29
|
-
}
|
|
30
|
-
set model(model) {
|
|
31
|
-
this._model = model;
|
|
32
|
-
}
|
|
33
|
-
actions = {
|
|
34
|
-
[Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem), true),
|
|
35
|
-
[Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem), true),
|
|
36
|
-
[Keys.ArrowLeft]: () => !this.isLoadMoreButton && (this.expand({
|
|
37
|
-
expand: this.localization.rtl,
|
|
38
|
-
intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent
|
|
39
|
-
})),
|
|
40
|
-
[Keys.ArrowRight]: () => !this.isLoadMoreButton && (this.expand({
|
|
41
|
-
expand: !this.localization.rtl,
|
|
42
|
-
intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild
|
|
43
|
-
})),
|
|
44
|
-
[Keys.Home]: () => this.activate(this.model.firstVisibleNode(), true),
|
|
45
|
-
[Keys.End]: () => this.activate(this.model.lastVisibleNode(), true),
|
|
46
|
-
[Keys.Enter]: (e) => this.handleEnter(e),
|
|
47
|
-
[Keys.NumpadEnter]: (e) => this.handleEnter(e),
|
|
48
|
-
[Keys.Space]: () => this.handleSpace()
|
|
49
|
-
};
|
|
50
|
-
activeItem;
|
|
51
|
-
isFocused = false;
|
|
52
|
-
shouldScroll = false;
|
|
53
|
-
_model = new NavigationModel();
|
|
54
|
-
get activeIndex() {
|
|
55
|
-
return nodeIndex(this.activeItem) || null;
|
|
56
|
-
}
|
|
57
|
-
get isActiveExpanded() {
|
|
58
|
-
return this.activeItem && this.activeItem.children.length > 0;
|
|
59
|
-
}
|
|
60
|
-
get isLoadMoreButton() {
|
|
61
|
-
return this.activeItem && this.activeItem.loadMoreButton;
|
|
62
|
-
}
|
|
63
|
-
get focusableItem() {
|
|
64
|
-
return this.activeItem || this.model.firstFocusableNode();
|
|
65
|
-
}
|
|
66
|
-
constructor(localization) {
|
|
67
|
-
this.localization = localization;
|
|
68
|
-
this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);
|
|
69
|
-
this.moveToParent = this.moveToParent.bind(this);
|
|
70
|
-
}
|
|
71
|
-
activate(item, shouldScroll = false) {
|
|
72
|
-
if (!this.navigable || !item || this.isActive(nodeIndex(item))) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
this.isFocused = true;
|
|
76
|
-
this.activeItem = item || this.activeItem;
|
|
77
|
-
this.shouldScroll = shouldScroll;
|
|
78
|
-
this.notifyMove();
|
|
79
|
-
}
|
|
80
|
-
activateParent(index) {
|
|
81
|
-
this.activate(this.model.findParent(index));
|
|
82
|
-
}
|
|
83
|
-
activateIndex(index) {
|
|
84
|
-
if (!index) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
this.activate(this.model.findNode(index));
|
|
88
|
-
}
|
|
89
|
-
activateClosest(index) {
|
|
90
|
-
if (!index || nodeIndex(this.focusableItem) !== index) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
this.activeItem = this.model.closestNode(index);
|
|
94
|
-
this.notifyMove();
|
|
95
|
-
}
|
|
96
|
-
activateFocusable() {
|
|
97
|
-
if (this.activeItem) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
this.activeItem = this.model.firstVisibleNode();
|
|
101
|
-
this.notifyMove();
|
|
102
|
-
}
|
|
103
|
-
deactivate() {
|
|
104
|
-
if (!this.navigable || !this.isFocused) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
this.isFocused = false;
|
|
108
|
-
this.notifyMove();
|
|
109
|
-
}
|
|
110
|
-
checkIndex(index) {
|
|
111
|
-
if (!this.isDisabled(index)) {
|
|
112
|
-
this.checks.next(index);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
selectIndex(index) {
|
|
116
|
-
if (!this.isDisabled(index)) {
|
|
117
|
-
this.selects.next(index);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
notifyLoadMore(index) {
|
|
121
|
-
if (!isPresent(index)) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this.loadMore.next(index);
|
|
125
|
-
}
|
|
126
|
-
isActive(index) {
|
|
127
|
-
if (!index) {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
return this.isFocused && this.activeIndex === index;
|
|
131
|
-
}
|
|
132
|
-
isFocusable(index) {
|
|
133
|
-
return nodeIndex(this.focusableItem) === index;
|
|
134
|
-
}
|
|
135
|
-
isDisabled(index) {
|
|
136
|
-
if (!index) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
return this.model.findNode(index).disabled;
|
|
140
|
-
}
|
|
141
|
-
registerItem(id, index, disabled, loadMoreButton = false, visible = true) {
|
|
142
|
-
const itemAtIndex = this.model.findNode(index);
|
|
143
|
-
if (isPresent(itemAtIndex)) {
|
|
144
|
-
this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);
|
|
145
|
-
if (this.isActive(index)) {
|
|
146
|
-
this.deactivate();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
this.model.registerItem(id, index, disabled, loadMoreButton, visible);
|
|
150
|
-
}
|
|
151
|
-
updateItem(index, disabled, visible = true) {
|
|
152
|
-
const itemAtIndex = this.model.findNode(index);
|
|
153
|
-
if (isPresent(itemAtIndex)) {
|
|
154
|
-
if (this.isActive(index)) {
|
|
155
|
-
this.deactivate();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
itemAtIndex.disabled = disabled;
|
|
159
|
-
itemAtIndex.visible = visible;
|
|
160
|
-
}
|
|
161
|
-
unregisterItem(id, index) {
|
|
162
|
-
if (this.isActive(index)) {
|
|
163
|
-
this.activateParent(index);
|
|
164
|
-
}
|
|
165
|
-
this.model.unregisterItem(id, index);
|
|
166
|
-
}
|
|
167
|
-
move(e) {
|
|
168
|
-
if (!this.navigable) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
172
|
-
const code = normalizeKeys(e);
|
|
173
|
-
const moveAction = this.actions[code];
|
|
174
|
-
if (!moveAction) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
moveAction(e);
|
|
178
|
-
e.preventDefault();
|
|
179
|
-
}
|
|
180
|
-
expand({ expand, intercept }) {
|
|
181
|
-
const index = nodeIndex(this.activeItem);
|
|
182
|
-
if (!index || intercept(index)) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
this.notifyExpand(expand);
|
|
186
|
-
}
|
|
187
|
-
moveToParent() {
|
|
188
|
-
if (this.isActiveExpanded) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
this.activate(this.model.findParent(nodeIndex(this.activeItem)));
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
moveToFirstVisibleChild() {
|
|
195
|
-
if (!this.isActiveExpanded) {
|
|
196
|
-
return false;
|
|
197
|
-
}
|
|
198
|
-
this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
notifyExpand(expand) {
|
|
202
|
-
this.expands.next(this.navigationState(expand));
|
|
203
|
-
}
|
|
204
|
-
notifyMove() {
|
|
205
|
-
this.moves.next(this.navigationState());
|
|
206
|
-
}
|
|
207
|
-
navigationState(expand = false) {
|
|
208
|
-
return ({ expand, index: this.activeIndex, isFocused: this.isFocused, shouldScroll: this.shouldScroll });
|
|
209
|
-
}
|
|
210
|
-
handleEnter(event) {
|
|
211
|
-
if (!this.navigable) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
if (this.isLoadMoreButton) {
|
|
215
|
-
this.notifyLoadMore(this.activeIndex);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
const isCtrlPressed = event.ctrlKey || event.metaKey;
|
|
219
|
-
if (isCtrlPressed) {
|
|
220
|
-
this.selectIndex(this.activeIndex);
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
if (this.selection === 'multiple') {
|
|
224
|
-
this.deselectAllButCurrentItem.next({ dataItem: this.activeItem, index: this.activeIndex });
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.selectIndex(this.activeIndex);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
handleSpace() {
|
|
233
|
-
if (!this.navigable) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
if (this.isLoadMoreButton) {
|
|
237
|
-
this.notifyLoadMore(this.activeIndex);
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
this.checkIndex(this.activeIndex);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
244
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationService });
|
|
245
|
-
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationService, decorators: [{
|
|
247
|
-
type: Injectable
|
|
248
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }] });
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Injectable } from "@angular/core";
|
|
6
|
-
import { Subject } from "rxjs";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* @hidden
|
|
10
|
-
*/
|
|
11
|
-
export class NodeChildrenService {
|
|
12
|
-
changes = new Subject();
|
|
13
|
-
childrenLoaded(item, children) {
|
|
14
|
-
this.changes.next({ item, children });
|
|
15
|
-
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeChildrenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeChildrenService });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeChildrenService, decorators: [{
|
|
20
|
-
type: Injectable
|
|
21
|
-
}] });
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Optional, Directive, TemplateRef } from "@angular/core";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* Represents the template for TreeView nodes ([more information and example](slug:nodetemplate_treeview)).
|
|
9
|
-
*
|
|
10
|
-
* Use this template to customize the content of the nodes. To define the node template, nest an `<ng-template>`
|
|
11
|
-
* tag with the `kendoTreeViewNodeTemplate` directive inside a `<kendo-treeview>` tag.
|
|
12
|
-
*
|
|
13
|
-
* The template context provides the node data item and its hierarchical index as variables:
|
|
14
|
-
*
|
|
15
|
-
* - `let-dataItem`—The data item for the current node.
|
|
16
|
-
* - `let-index="index"`—The hierarchical index of the current node.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```html
|
|
20
|
-
* <kendo-treeview>
|
|
21
|
-
* <ng-template kendoTreeViewNodeTemplate let-dataItem let-index="index">
|
|
22
|
-
* <span [style.fontWeight]="dataItem.items ? 'bolder': 'normal' ">
|
|
23
|
-
* {{ index }}: {{ dataItem.text }}
|
|
24
|
-
* </span>
|
|
25
|
-
* </ng-template>
|
|
26
|
-
* </kendo-treeview>
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export class NodeTemplateDirective {
|
|
30
|
-
templateRef;
|
|
31
|
-
constructor(templateRef) {
|
|
32
|
-
this.templateRef = templateRef;
|
|
33
|
-
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NodeTemplateDirective, isStandalone: true, selector: "[kendoTreeViewNodeTemplate]", ngImport: i0 });
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeTemplateDirective, decorators: [{
|
|
38
|
-
type: Directive,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: '[kendoTreeViewNodeTemplate]',
|
|
41
|
-
standalone: true
|
|
42
|
-
}]
|
|
43
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
|
|
44
|
-
type: Optional
|
|
45
|
-
}] }] });
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
/**
|
|
6
|
-
* @hidden
|
|
7
|
-
*/
|
|
8
|
-
export const packageMetadata = {
|
|
9
|
-
name: '@progress/kendo-angular-treeview',
|
|
10
|
-
productName: 'Kendo UI for Angular',
|
|
11
|
-
productCode: 'KENDOUIANGULAR',
|
|
12
|
-
productCodes: ['KENDOUIANGULAR'],
|
|
13
|
-
publishDate: 1768393150,
|
|
14
|
-
version: '21.4.1',
|
|
15
|
-
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
/**
|
|
6
|
-
* Generated bundle index. Do not edit.
|
|
7
|
-
*/
|
|
8
|
-
export * from './index';
|