@progress/kendo-vue-treeview 3.2.2-dev.202204181420
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/LICENSE.md +11 -0
- package/NOTICE.txt +86 -0
- package/README.md +53 -0
- package/dist/cdn/js/kendo-vue-treeview.js +1 -0
- package/dist/es/ItemRenderProps.d.ts +13 -0
- package/dist/es/ItemRenderProps.js +1 -0
- package/dist/es/TreeView.d.ts +45 -0
- package/dist/es/TreeView.js +359 -0
- package/dist/es/TreeViewDragAnalyzer.d.ts +135 -0
- package/dist/es/TreeViewDragAnalyzer.js +184 -0
- package/dist/es/TreeViewDragClue.d.ts +135 -0
- package/dist/es/TreeViewDragClue.js +78 -0
- package/dist/es/TreeViewItem.d.ts +69 -0
- package/dist/es/TreeViewItem.js +359 -0
- package/dist/es/TreeViewOperationDescriptors.d.ts +76 -0
- package/dist/es/TreeViewOperationDescriptors.js +1 -0
- package/dist/es/TreeViewProps.d.ts +122 -0
- package/dist/es/TreeViewProps.js +0 -0
- package/dist/es/additionalTypes.ts +9 -0
- package/dist/es/events.d.ts +135 -0
- package/dist/es/events.js +0 -0
- package/dist/es/handleTreeViewCheckChange.d.ts +67 -0
- package/dist/es/handleTreeViewCheckChange.js +195 -0
- package/dist/es/main.d.ts +12 -0
- package/dist/es/main.js +8 -0
- package/dist/es/moveTreeViewItem.d.ts +109 -0
- package/dist/es/moveTreeViewItem.js +156 -0
- package/dist/es/package-metadata.d.ts +5 -0
- package/dist/es/package-metadata.js +11 -0
- package/dist/es/processTreeViewItems.d.ts +51 -0
- package/dist/es/processTreeViewItems.js +166 -0
- package/dist/es/utils/FieldsService.d.ts +26 -0
- package/dist/es/utils/FieldsService.js +50 -0
- package/dist/es/utils/SortedPublicItemIds.d.ts +8 -0
- package/dist/es/utils/SortedPublicItemIds.js +26 -0
- package/dist/es/utils/consts.d.ts +40 -0
- package/dist/es/utils/consts.js +40 -0
- package/dist/es/utils/getItemIdUponKeyboardNavigation.d.ts +5 -0
- package/dist/es/utils/getItemIdUponKeyboardNavigation.js +77 -0
- package/dist/es/utils/itemIdUtils.d.ts +60 -0
- package/dist/es/utils/itemIdUtils.js +117 -0
- package/dist/es/utils/itemUtils.d.ts +45 -0
- package/dist/es/utils/itemUtils.js +191 -0
- package/dist/es/utils/misc.d.ts +9 -0
- package/dist/es/utils/misc.js +17 -0
- package/dist/npm/ItemRenderProps.d.ts +13 -0
- package/dist/npm/ItemRenderProps.js +3 -0
- package/dist/npm/TreeView.d.ts +45 -0
- package/dist/npm/TreeView.js +376 -0
- package/dist/npm/TreeViewDragAnalyzer.d.ts +135 -0
- package/dist/npm/TreeViewDragAnalyzer.js +186 -0
- package/dist/npm/TreeViewDragClue.d.ts +135 -0
- package/dist/npm/TreeViewDragClue.js +88 -0
- package/dist/npm/TreeViewItem.d.ts +69 -0
- package/dist/npm/TreeViewItem.js +373 -0
- package/dist/npm/TreeViewOperationDescriptors.d.ts +76 -0
- package/dist/npm/TreeViewOperationDescriptors.js +3 -0
- package/dist/npm/TreeViewProps.d.ts +122 -0
- package/dist/npm/TreeViewProps.js +2 -0
- package/dist/npm/additionalTypes.ts +9 -0
- package/dist/npm/events.d.ts +135 -0
- package/dist/npm/events.js +2 -0
- package/dist/npm/handleTreeViewCheckChange.d.ts +67 -0
- package/dist/npm/handleTreeViewCheckChange.js +199 -0
- package/dist/npm/main.d.ts +12 -0
- package/dist/npm/main.js +17 -0
- package/dist/npm/moveTreeViewItem.d.ts +109 -0
- package/dist/npm/moveTreeViewItem.js +159 -0
- package/dist/npm/package-metadata.d.ts +5 -0
- package/dist/npm/package-metadata.js +14 -0
- package/dist/npm/processTreeViewItems.d.ts +51 -0
- package/dist/npm/processTreeViewItems.js +169 -0
- package/dist/npm/utils/FieldsService.d.ts +26 -0
- package/dist/npm/utils/FieldsService.js +52 -0
- package/dist/npm/utils/SortedPublicItemIds.d.ts +8 -0
- package/dist/npm/utils/SortedPublicItemIds.js +28 -0
- package/dist/npm/utils/consts.d.ts +40 -0
- package/dist/npm/utils/consts.js +43 -0
- package/dist/npm/utils/getItemIdUponKeyboardNavigation.d.ts +5 -0
- package/dist/npm/utils/getItemIdUponKeyboardNavigation.js +80 -0
- package/dist/npm/utils/itemIdUtils.d.ts +60 -0
- package/dist/npm/utils/itemIdUtils.js +132 -0
- package/dist/npm/utils/itemUtils.d.ts +45 -0
- package/dist/npm/utils/itemUtils.js +205 -0
- package/dist/npm/utils/misc.d.ts +9 -0
- package/dist/npm/utils/misc.js +22 -0
- package/package.json +56 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export var EXPAND_FIELD = 'expanded';
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export var TEXT_FIELD = 'text';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export var DISABLED_FIELD = 'disabled';
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export var CHILDREN_FIELD = 'items';
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export var HAS_CHILDREN_FIELD = 'hasChildren';
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
*/
|
|
24
|
+
export var SELECT_FIELD = 'selected';
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export var CHECK_FIELD = 'checked';
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export var CHECK_INDETERMINATE_FIELD = 'checkIndeterminate';
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export var DOM_KENDO_ITEM_ID_FIELD = '_kendoItemId';
|
|
37
|
+
/**
|
|
38
|
+
* @hidden
|
|
39
|
+
*/
|
|
40
|
+
export var DOM_KENDO_TREEVIEW_GUID_FIELD = '_kendoTreeViewGuid';
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Keys } from '@progress/kendo-vue-common';
|
|
2
|
+
import * as idUtils from './itemIdUtils';
|
|
3
|
+
import { isItemExpandedAndWithChildren, isEnabledAndAllParentsEnabled } from './itemUtils';
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
export default function getItemIdUponKeyboardNavigation(item, itemId, items, keyCode, fieldsSvc) {
|
|
8
|
+
switch (keyCode) {
|
|
9
|
+
case Keys.left:
|
|
10
|
+
return getIdUponLeftKey();
|
|
11
|
+
case Keys.right:
|
|
12
|
+
return getIdUponRightKey();
|
|
13
|
+
case Keys.up:
|
|
14
|
+
return getIdUponUpKey();
|
|
15
|
+
case Keys.down:
|
|
16
|
+
return getIdUponDownKey();
|
|
17
|
+
case Keys.home:
|
|
18
|
+
return idUtils.ZERO_LEVEL_ZERO_NODE_ID;
|
|
19
|
+
case Keys.end:
|
|
20
|
+
return getIdUponEndKey();
|
|
21
|
+
default:
|
|
22
|
+
return itemId;
|
|
23
|
+
}
|
|
24
|
+
function getIdUponLeftKey() {
|
|
25
|
+
return idUtils.isIdZeroLevel(itemId)
|
|
26
|
+
// For expanded disabled items, navigate directly to the parent.
|
|
27
|
+
// Collapse cannot happen because an event is not fired to the client.
|
|
28
|
+
|| (fieldsSvc.expanded(item) && isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc)) ?
|
|
29
|
+
itemId : idUtils.getDirectParentId(itemId);
|
|
30
|
+
}
|
|
31
|
+
function getIdUponRightKey() {
|
|
32
|
+
return isItemExpandedAndWithChildren(item, fieldsSvc) ? idUtils.getFirstChildId(itemId) : itemId;
|
|
33
|
+
}
|
|
34
|
+
function getIdUponUpKey() {
|
|
35
|
+
var index = Number(idUtils.getShortId(itemId));
|
|
36
|
+
var parentId = idUtils.getDirectParentId(itemId);
|
|
37
|
+
return index ? getLastNotOpenedChildId(idUtils.createId(index - 1, parentId), items, fieldsSvc) :
|
|
38
|
+
idUtils.isIdZeroLevel(itemId) ? itemId : parentId;
|
|
39
|
+
}
|
|
40
|
+
function getIdUponDownKey() {
|
|
41
|
+
if (isItemExpandedAndWithChildren(item, fieldsSvc)) {
|
|
42
|
+
return idUtils.getFirstChildId(itemId);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return getNextItemId(itemId, items, fieldsSvc) || itemId;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function getIdUponEndKey() {
|
|
49
|
+
var result = (items.length - 1).toString();
|
|
50
|
+
var currentItem = items[items.length - 1];
|
|
51
|
+
var children;
|
|
52
|
+
while (isItemExpandedAndWithChildren(currentItem, fieldsSvc)) {
|
|
53
|
+
children = currentItem[fieldsSvc.getChildrenField()];
|
|
54
|
+
result = idUtils.createId(children.length - 1, result);
|
|
55
|
+
currentItem = children[children.length - 1];
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function getNextItemId(itemId, items, fieldsSvc) {
|
|
61
|
+
var parentId = idUtils.getDirectParentId(itemId);
|
|
62
|
+
var parent = parentId ? idUtils.getItemById(parentId, items, fieldsSvc.getChildrenField()) : undefined;
|
|
63
|
+
var siblings = parent ? parent[fieldsSvc.getChildrenField()] : items;
|
|
64
|
+
var index = Number(idUtils.getShortId(itemId));
|
|
65
|
+
return index < siblings.length - 1 ?
|
|
66
|
+
idUtils.createId(index + 1, parentId) :
|
|
67
|
+
parent ? getNextItemId(parentId, items, fieldsSvc) : undefined;
|
|
68
|
+
}
|
|
69
|
+
function getLastNotOpenedChildId(itemId, items, fieldsSvc) {
|
|
70
|
+
var item = idUtils.getItemById(itemId, items, fieldsSvc.getChildrenField());
|
|
71
|
+
if (isItemExpandedAndWithChildren(item, fieldsSvc)) {
|
|
72
|
+
return getLastNotOpenedChildId(idUtils.createId(item[fieldsSvc.getChildrenField()].length - 1, itemId), items, fieldsSvc);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return itemId;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare const EMPTY_ID = "";
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export declare const ZERO_LEVEL_ZERO_NODE_ID = "0";
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare const SEPARATOR = "_";
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare function getItemById(itemId: string, items: any, childrenField: string): any;
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRootParentId(itemId: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
*/
|
|
24
|
+
export declare function getIdWithoutRootParentId(itemId: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export declare function getFirstChildId(itemId: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export declare function createId(childId: string | number, parentId?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export declare function getDirectParentId(itemId: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* @hidden
|
|
39
|
+
*/
|
|
40
|
+
export declare function isIdEmptyOrZeroLevel(itemId: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
export declare function isIdZeroLevel(itemId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
export declare function getAllShortIds(itemId: string): string[];
|
|
49
|
+
/**
|
|
50
|
+
* @hidden
|
|
51
|
+
*/
|
|
52
|
+
export declare function getShortId(itemId: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
export declare function isItemFirstFromSiblings(itemId: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
*/
|
|
60
|
+
export declare function getDecrementedItemIdAfterRemoval(removedItemId: string, itemId: string): string;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export var EMPTY_ID = '';
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export var ZERO_LEVEL_ZERO_NODE_ID = '0';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export var SEPARATOR = '_';
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export function getItemById(itemId, items, childrenField) {
|
|
17
|
+
if (isIdZeroLevel(itemId)) {
|
|
18
|
+
return items[Number(itemId)];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
var rootParentItem = items[Number(getRootParentId(itemId))];
|
|
22
|
+
var subItems = (rootParentItem && rootParentItem[childrenField]) || [];
|
|
23
|
+
return subItems.length ?
|
|
24
|
+
getItemById(getIdWithoutRootParentId(itemId), subItems, childrenField) : undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
*/
|
|
30
|
+
export function getRootParentId(itemId) {
|
|
31
|
+
return isIdEmptyOrZeroLevel(itemId) ? itemId : itemId.split(SEPARATOR)[0];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export function getIdWithoutRootParentId(itemId) {
|
|
37
|
+
if (isIdEmptyOrZeroLevel(itemId)) {
|
|
38
|
+
return itemId;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
var firstSeparatorIndex = itemId.indexOf(SEPARATOR);
|
|
42
|
+
return itemId.substring(firstSeparatorIndex + 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
export function getFirstChildId(itemId) {
|
|
49
|
+
return createId('0', itemId);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @hidden
|
|
53
|
+
*/
|
|
54
|
+
export function createId(childId, parentId) {
|
|
55
|
+
childId = childId.toString();
|
|
56
|
+
return parentId ? parentId + SEPARATOR + childId : childId;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @hidden
|
|
60
|
+
*/
|
|
61
|
+
export function getDirectParentId(itemId) {
|
|
62
|
+
var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);
|
|
63
|
+
return lastSeparatorIndex < 0 ? EMPTY_ID : itemId.substring(0, lastSeparatorIndex);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @hidden
|
|
67
|
+
*/
|
|
68
|
+
export function isIdEmptyOrZeroLevel(itemId) {
|
|
69
|
+
return itemId === EMPTY_ID || itemId.indexOf(SEPARATOR) < 0;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
*/
|
|
74
|
+
export function isIdZeroLevel(itemId) {
|
|
75
|
+
return itemId !== EMPTY_ID && itemId.indexOf(SEPARATOR) < 0;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @hidden
|
|
79
|
+
*/
|
|
80
|
+
export function getAllShortIds(itemId) {
|
|
81
|
+
return itemId.split(SEPARATOR);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @hidden
|
|
85
|
+
*/
|
|
86
|
+
export function getShortId(itemId) {
|
|
87
|
+
var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);
|
|
88
|
+
return lastSeparatorIndex < 0 ? itemId : itemId.substring(lastSeparatorIndex + 1);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @hidden
|
|
92
|
+
*/
|
|
93
|
+
export function isItemFirstFromSiblings(itemId) {
|
|
94
|
+
return getShortId(itemId) === ZERO_LEVEL_ZERO_NODE_ID;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @hidden
|
|
98
|
+
*/
|
|
99
|
+
export function getDecrementedItemIdAfterRemoval(removedItemId, itemId) {
|
|
100
|
+
var preservedItemId = itemId;
|
|
101
|
+
removedItemId = 'r' + SEPARATOR + removedItemId;
|
|
102
|
+
itemId = 'r' + SEPARATOR + itemId;
|
|
103
|
+
var itemSharedPath = getDirectParentId(removedItemId) + SEPARATOR;
|
|
104
|
+
if (itemId.startsWith(itemSharedPath)) {
|
|
105
|
+
var itemNotSharedPath = itemId.substring(itemSharedPath.length);
|
|
106
|
+
if (itemNotSharedPath) {
|
|
107
|
+
var siblingShortId = getRootParentId(itemNotSharedPath);
|
|
108
|
+
if (Number(getShortId(removedItemId)) < Number(siblingShortId)) {
|
|
109
|
+
var decrementedId = itemSharedPath +
|
|
110
|
+
(Number(siblingShortId) - 1).toString() +
|
|
111
|
+
itemNotSharedPath.substring(siblingShortId.length);
|
|
112
|
+
return getIdWithoutRootParentId(decrementedId);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return preservedItemId;
|
|
117
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import FieldsService from './FieldsService';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export declare function hasChildren(item: any, childrenField: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
export declare function isItemExpandedAndWithChildren(item: any, fieldsSvc: FieldsService): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveItemId(publicId: any, idField: string, items: any[], childrenField: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveItemsIds(publicIds: any[], idField: string, items: any[], childrenField: string): string[];
|
|
18
|
+
/**
|
|
19
|
+
* @hidden
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateItem(items: any[], itemId: string, update: (item: any) => void, cloneField: string, childrenField: string): any[];
|
|
22
|
+
/**
|
|
23
|
+
* @hidden
|
|
24
|
+
*/
|
|
25
|
+
export declare function isEnabledAndAllParentsEnabled(itemId: string, items: any, fieldsSvc: FieldsService): any;
|
|
26
|
+
/**
|
|
27
|
+
* @hidden
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAllDirectIndirectChildrenIds(item: any, itemId: string, childrenField: string, idField: string | undefined): any[];
|
|
30
|
+
/**
|
|
31
|
+
* @hidden
|
|
32
|
+
*/
|
|
33
|
+
export declare function areAllDirectChildrenChecked(item: any, itemId: any, idField: string | undefined, childrenField: string, check: string[]): any;
|
|
34
|
+
/**
|
|
35
|
+
* @hidden
|
|
36
|
+
*/
|
|
37
|
+
export declare function getAllParents(itemId: string, childrenField: string, items: any[]): any[];
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
*/
|
|
41
|
+
export declare function removeItem(itemId: string, childrenField: string, items: any[]): any[];
|
|
42
|
+
/**
|
|
43
|
+
* @hidden
|
|
44
|
+
*/
|
|
45
|
+
export declare function addItem(item: any, operation: 'before' | 'after' | 'child', childrenField: string, targetItemId: string, items: any[]): any[];
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { EMPTY_ID, isIdZeroLevel, createId, getRootParentId, getIdWithoutRootParentId, getAllShortIds } from './itemIdUtils';
|
|
13
|
+
import SortedPublicItemIds from './SortedPublicItemIds';
|
|
14
|
+
import { getNestedValue } from './misc';
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
export function hasChildren(item, childrenField) {
|
|
19
|
+
var children = getNestedValue(childrenField, item);
|
|
20
|
+
return Boolean(children && children.length);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @hidden
|
|
24
|
+
*/
|
|
25
|
+
export function isItemExpandedAndWithChildren(item, fieldsSvc) {
|
|
26
|
+
return fieldsSvc.expanded(item) && hasChildren(item, fieldsSvc.getChildrenField());
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @hidden
|
|
30
|
+
*/
|
|
31
|
+
export function resolveItemId(publicId, idField, items, childrenField) {
|
|
32
|
+
var resolvedIds = resolveItemsIds([publicId], idField, items, childrenField);
|
|
33
|
+
return resolvedIds.length ? resolvedIds[0] : undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @hidden
|
|
37
|
+
*/
|
|
38
|
+
export function resolveItemsIds(publicIds, idField, items, childrenField) {
|
|
39
|
+
var result = [];
|
|
40
|
+
var sortedIds = new SortedPublicItemIds();
|
|
41
|
+
sortedIds.init(publicIds);
|
|
42
|
+
resolveItemsIdsHelper(sortedIds, idField, items, EMPTY_ID, result, childrenField);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
export function updateItem(items, itemId, update, cloneField, childrenField) {
|
|
49
|
+
var _a;
|
|
50
|
+
var itemIndex = Number(getRootParentId(itemId));
|
|
51
|
+
if (itemIndex >= items.length) {
|
|
52
|
+
return items;
|
|
53
|
+
}
|
|
54
|
+
var result = items;
|
|
55
|
+
var item = items[itemIndex];
|
|
56
|
+
// Clone the item before updating it.
|
|
57
|
+
if (!item[cloneField]) {
|
|
58
|
+
result = items.slice();
|
|
59
|
+
item = result[itemIndex] = Object.assign({}, item, (_a = {}, _a[cloneField] = true, _a));
|
|
60
|
+
}
|
|
61
|
+
// Directly update the item.
|
|
62
|
+
if (isIdZeroLevel(itemId)) {
|
|
63
|
+
update(item);
|
|
64
|
+
}
|
|
65
|
+
else if (item[childrenField]) {
|
|
66
|
+
item[childrenField] = updateItem(item[childrenField], getIdWithoutRootParentId(itemId), update, cloneField, childrenField);
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
*/
|
|
73
|
+
export function isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc) {
|
|
74
|
+
var ids = getAllShortIds(itemId);
|
|
75
|
+
var currentItems = items;
|
|
76
|
+
for (var i = 0; i < ids.length; i++) {
|
|
77
|
+
var currentItem = currentItems[Number(ids[i])];
|
|
78
|
+
if (fieldsSvc.disabled(currentItem)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
currentItems = currentItem[fieldsSvc.getChildrenField()];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @hidden
|
|
89
|
+
*/
|
|
90
|
+
export function getAllDirectIndirectChildrenIds(item, itemId, childrenField, idField) {
|
|
91
|
+
return idField ? getChildrenPublicIds(item) : getChildrenHierarchicalIndices(item, itemId);
|
|
92
|
+
function getChildrenHierarchicalIndices(startItem, startItemId) {
|
|
93
|
+
var result = [];
|
|
94
|
+
var children = startItem[childrenField] || [];
|
|
95
|
+
for (var i = 0; i < children.length; i++) {
|
|
96
|
+
var id = createId(i, startItemId);
|
|
97
|
+
result.push(id);
|
|
98
|
+
result = result.concat(getChildrenHierarchicalIndices(children[i], id));
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
function getChildrenPublicIds(startItem) {
|
|
103
|
+
var result = [];
|
|
104
|
+
var children = startItem[childrenField] || [];
|
|
105
|
+
for (var i = 0; i < children.length; i++) {
|
|
106
|
+
result.push(getNestedValue(idField, children[i]));
|
|
107
|
+
result = result.concat(getChildrenPublicIds(children[i]));
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @hidden
|
|
114
|
+
*/
|
|
115
|
+
export function areAllDirectChildrenChecked(item, itemId, idField, childrenField, check) {
|
|
116
|
+
var children = item[childrenField] || [];
|
|
117
|
+
return children.every(function (child, index) {
|
|
118
|
+
return check.indexOf(idField ? getNestedValue(idField, child) : createId(index, itemId)) > -1;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @hidden
|
|
123
|
+
*/
|
|
124
|
+
export function getAllParents(itemId, childrenField, items) {
|
|
125
|
+
var result = [];
|
|
126
|
+
var ids = getAllShortIds(itemId);
|
|
127
|
+
var currentItems = items;
|
|
128
|
+
for (var i = 0; i < ids.length - 1; i++) {
|
|
129
|
+
if (!currentItems) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
var currentItem = currentItems[Number(ids[i])];
|
|
133
|
+
result.push(currentItem);
|
|
134
|
+
currentItems = currentItem[childrenField];
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @hidden
|
|
140
|
+
*/
|
|
141
|
+
export function removeItem(itemId, childrenField, items) {
|
|
142
|
+
var result = items.slice();
|
|
143
|
+
if (isIdZeroLevel(itemId)) {
|
|
144
|
+
result.splice(Number(itemId), 1);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
var rootParentIndex = Number(getRootParentId(itemId));
|
|
148
|
+
var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);
|
|
149
|
+
rootParent[childrenField] = removeItem(getIdWithoutRootParentId(itemId), childrenField, rootParent[childrenField]);
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @hidden
|
|
155
|
+
*/
|
|
156
|
+
export function addItem(item, operation, childrenField, targetItemId, items) {
|
|
157
|
+
var result = items.slice();
|
|
158
|
+
if (isIdZeroLevel(targetItemId)) {
|
|
159
|
+
if (operation === 'child') {
|
|
160
|
+
var targetItem = result[Number(targetItemId)] = __assign({}, result[Number(targetItemId)]);
|
|
161
|
+
if (targetItem[childrenField]) {
|
|
162
|
+
targetItem[childrenField] = targetItem[childrenField].slice();
|
|
163
|
+
targetItem[childrenField].push(item);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
targetItem[childrenField] = [item];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
result.splice(Number(targetItemId) + (operation === 'after' ? 1 : 0), 0, item);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
var rootParentIndex = Number(getRootParentId(targetItemId));
|
|
175
|
+
var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);
|
|
176
|
+
rootParent[childrenField] = addItem(item, operation, childrenField, getIdWithoutRootParentId(targetItemId), rootParent[childrenField]);
|
|
177
|
+
}
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
function resolveItemsIdsHelper(publicItemIds, idField, items, parentItemId, resolvedIds, childrenField) {
|
|
181
|
+
for (var i = 0; i < items.length; i++) {
|
|
182
|
+
var item = items[i];
|
|
183
|
+
var id = createId(i, parentItemId);
|
|
184
|
+
if (publicItemIds.hasId(getNestedValue(idField, item))) {
|
|
185
|
+
resolvedIds.push(id);
|
|
186
|
+
}
|
|
187
|
+
if (hasChildren(item, childrenField)) {
|
|
188
|
+
resolveItemsIdsHelper(publicItemIds, idField, getNestedValue(childrenField, item), id, resolvedIds, childrenField);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TreeViewOperationDescriptor } from '../TreeViewOperationDescriptors';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export declare function getNestedValue(fieldName: string | undefined, dataItem: any): any;
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
export declare function isArray(operation: string[] | TreeViewOperationDescriptor): operation is any[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export function getNestedValue(fieldName, dataItem) {
|
|
5
|
+
var path = (fieldName || '').split('.');
|
|
6
|
+
var data = dataItem;
|
|
7
|
+
path.forEach(function (p) {
|
|
8
|
+
data = data ? data[p] : undefined;
|
|
9
|
+
});
|
|
10
|
+
return data;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
export function isArray(operation) {
|
|
16
|
+
return operation.length !== undefined;
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The props of the ItemRender component ([see example]({% slug rendering_treeview %})).
|
|
3
|
+
*/
|
|
4
|
+
export interface ItemRenderProps {
|
|
5
|
+
/**
|
|
6
|
+
* The item that is rendered.
|
|
7
|
+
*/
|
|
8
|
+
item: any;
|
|
9
|
+
/**
|
|
10
|
+
* The hierarchical index of the item. The indices are zero-based. The first root item has a `0` (zero) index. If the first root item has children, the first child acquires a `0_0` index and the second acquires a `0_1` index.
|
|
11
|
+
*/
|
|
12
|
+
itemHierarchicalIndex: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DefineComponent } from './additionalTypes';
|
|
2
|
+
import { RecordPropsDefinition, ComponentOptions } from 'vue/types/options';
|
|
3
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
4
|
+
declare type DefaultMethods<V> = {
|
|
5
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
6
|
+
};
|
|
7
|
+
import { TreeViewProps } from './TreeViewProps';
|
|
8
|
+
import FieldsService from './utils/FieldsService';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export interface TreeViewState {
|
|
13
|
+
blurRequest: any;
|
|
14
|
+
fieldsSvc: FieldsService;
|
|
15
|
+
treeGuid: string;
|
|
16
|
+
allowExplicitFocus: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @hidden
|
|
20
|
+
*/
|
|
21
|
+
export interface TreeViewComputed {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @hidden
|
|
26
|
+
*/
|
|
27
|
+
export interface TreeViewMethods {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @hidden
|
|
32
|
+
*/
|
|
33
|
+
export interface TreeViewData {
|
|
34
|
+
focusedItemId?: string;
|
|
35
|
+
focusedItemPublicId?: any;
|
|
36
|
+
tabbableItemId?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
*/
|
|
41
|
+
export interface TreeViewAll extends Vue, TreeViewMethods, TreeViewData, TreeViewComputed, TreeViewState {
|
|
42
|
+
}
|
|
43
|
+
declare let TreeViewVue2: ComponentOptions<TreeViewAll, DefaultData<TreeViewData>, DefaultMethods<TreeViewAll>, TreeViewComputed, RecordPropsDefinition<TreeViewProps>>;
|
|
44
|
+
declare const TreeView: DefineComponent<TreeViewProps, any, TreeViewData, TreeViewComputed, TreeViewMethods, {}, {}, {}, string, TreeViewProps, TreeViewProps, {}>;
|
|
45
|
+
export { TreeView, TreeViewVue2 };
|