@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,135 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Represents the props of the KendoReact TreeViewDragClue component.
|
|
9
|
+
*/
|
|
10
|
+
export interface TreeViewDragClueProps {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Represents the KendoReact TreeViewDragClue component which renders a clue when an item is dragged.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```jsx
|
|
17
|
+
* class App extends React.Component {
|
|
18
|
+
* dragClue;
|
|
19
|
+
* state = { tree };
|
|
20
|
+
*
|
|
21
|
+
* render() {
|
|
22
|
+
* return (
|
|
23
|
+
* <div>
|
|
24
|
+
* <TreeView data={this.state.tree} draggable={true}
|
|
25
|
+
* onItemDragOver={this.onItemDragOver} onItemDragEnd={this.onItemDragEnd} />
|
|
26
|
+
* <TreeViewDragClue ref={dragClue => this.dragClue = dragClue} />
|
|
27
|
+
* </div>
|
|
28
|
+
* );
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* onItemDragOver = (event) => {
|
|
32
|
+
* this.dragClue.show(event.pageY + 10, event.pageX, event.item.text, this.getClueClassName(event));
|
|
33
|
+
* }
|
|
34
|
+
* onItemDragEnd = (event) => {
|
|
35
|
+
* this.dragClue.hide();
|
|
36
|
+
* const eventAnalyzer = new TreeViewDragAnalyzer(event).init();
|
|
37
|
+
*
|
|
38
|
+
* if (eventAnalyzer.isDropAllowed) {
|
|
39
|
+
* const updatedTree = moveTreeViewItem(
|
|
40
|
+
* event.itemHierarchicalIndex,
|
|
41
|
+
* this.state.tree,
|
|
42
|
+
* eventAnalyzer.getDropOperation(),
|
|
43
|
+
* eventAnalyzer.destinationMeta.itemHierarchicalIndex,
|
|
44
|
+
* );
|
|
45
|
+
*
|
|
46
|
+
* this.setState({ tree: updatedTree });
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
* getClueClassName(event) {
|
|
50
|
+
* const eventAnalyzer = new TreeViewDragAnalyzer(event).init();
|
|
51
|
+
* const itemIndex = eventAnalyzer.destinationMeta.itemHierarchicalIndex;
|
|
52
|
+
*
|
|
53
|
+
* if (eventAnalyzer.isDropAllowed) {
|
|
54
|
+
* switch (eventAnalyzer.getDropOperation()) {
|
|
55
|
+
* case 'child':
|
|
56
|
+
* return 'k-i-plus';
|
|
57
|
+
* case 'before':
|
|
58
|
+
* return itemIndex === '0' || itemIndex.endsWith(`${SEPARATOR}0`) ?
|
|
59
|
+
* 'k-i-insert-up' : 'k-i-insert-middle';
|
|
60
|
+
* case 'after':
|
|
61
|
+
* const siblings = getSiblings(itemIndex, this.state.tree);
|
|
62
|
+
* const lastIndex = Number(itemIndex.split(SEPARATOR).pop());
|
|
63
|
+
*
|
|
64
|
+
* return lastIndex < siblings.length - 1 ? 'k-i-insert-middle' : 'k-i-insert-down';
|
|
65
|
+
* default:
|
|
66
|
+
* break;
|
|
67
|
+
* }
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* return 'k-i-cancel';
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* function getSiblings(itemIndex, data) {
|
|
75
|
+
* let result = data;
|
|
76
|
+
*
|
|
77
|
+
* const indices = itemIndex.split(SEPARATOR).map(index => Number(index));
|
|
78
|
+
* for (let i = 0; i < indices.length - 1; i++) {
|
|
79
|
+
* result = result[indices[i]].items;
|
|
80
|
+
* }
|
|
81
|
+
*
|
|
82
|
+
* return result;
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* const SEPARATOR = '_';
|
|
86
|
+
* const tree = [{
|
|
87
|
+
* text: 'Furniture', expanded: true, items: [
|
|
88
|
+
* { text: 'Tables & Chairs', expanded: true },
|
|
89
|
+
* { text: 'Sofas', expanded: true },
|
|
90
|
+
* { text: 'Occasional Furniture', expanded: true }]
|
|
91
|
+
* }, {
|
|
92
|
+
* text: 'Decor', expanded: true, items: [
|
|
93
|
+
* { text: 'Bed Linen', expanded: true },
|
|
94
|
+
* { text: 'Curtains & Blinds', expanded: true },
|
|
95
|
+
* { text: 'Carpets', expanded: true }]
|
|
96
|
+
* }];
|
|
97
|
+
*
|
|
98
|
+
* ReactDOM.render(<App />, document.querySelector('my-app'));
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
/**
|
|
102
|
+
* @hidden
|
|
103
|
+
*/
|
|
104
|
+
export interface TreeViewDragClueState {
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* @hidden
|
|
108
|
+
*/
|
|
109
|
+
export interface TreeViewDragClueComputed {
|
|
110
|
+
[key: string]: any;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @hidden
|
|
114
|
+
*/
|
|
115
|
+
export interface TreeViewDragClueMethods {
|
|
116
|
+
[key: string]: any;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* @hidden
|
|
120
|
+
*/
|
|
121
|
+
export interface TreeViewDragClueData {
|
|
122
|
+
visible?: boolean;
|
|
123
|
+
top?: number;
|
|
124
|
+
left?: number;
|
|
125
|
+
text?: string;
|
|
126
|
+
operationClassName?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* @hidden
|
|
130
|
+
*/
|
|
131
|
+
export interface TreeViewDragClueAll extends Vue, TreeViewDragClueMethods, TreeViewDragClueData, TreeViewDragClueComputed, TreeViewDragClueState {
|
|
132
|
+
}
|
|
133
|
+
declare let TreeViewDragClueVue2: ComponentOptions<TreeViewDragClueAll, DefaultData<TreeViewDragClueData>, DefaultMethods<TreeViewDragClueAll>, TreeViewDragClueComputed, RecordPropsDefinition<TreeViewDragClueProps>>;
|
|
134
|
+
declare const TreeViewDragClue: DefineComponent<TreeViewDragClueProps, any, TreeViewDragClueData, TreeViewDragClueComputed, TreeViewDragClueMethods, {}, {}, {}, string, TreeViewDragClueProps, TreeViewDragClueProps, {}>;
|
|
135
|
+
export { TreeViewDragClue, TreeViewDragClueVue2 };
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
|
|
6
|
+
for (var p in s) {
|
|
7
|
+
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
}; // @ts-ignore
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
import * as Vue from 'vue';
|
|
19
|
+
var allVue = Vue;
|
|
20
|
+
var gh = allVue.h;
|
|
21
|
+
import { classNames } from '@progress/kendo-vue-common'; // tslint:enable:max-line-length
|
|
22
|
+
|
|
23
|
+
var TreeViewDragClueVue2 = {
|
|
24
|
+
name: 'KendoTreeViewDragClue',
|
|
25
|
+
props: {},
|
|
26
|
+
data: function data() {
|
|
27
|
+
return {
|
|
28
|
+
visible: false,
|
|
29
|
+
top: 0,
|
|
30
|
+
left: 0,
|
|
31
|
+
text: '',
|
|
32
|
+
operationClassName: 'k-i-cancel'
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
setup: !gh ? undefined : function () {
|
|
37
|
+
var v3 = !!gh;
|
|
38
|
+
return {
|
|
39
|
+
v3: v3
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
render: function render(createElement) {
|
|
44
|
+
var h = gh || createElement;
|
|
45
|
+
var defaultStyle = {
|
|
46
|
+
display: 'block',
|
|
47
|
+
position: 'absolute',
|
|
48
|
+
zIndex: 20000,
|
|
49
|
+
padding: '4px 6px'
|
|
50
|
+
};
|
|
51
|
+
var dynamicStyle = {
|
|
52
|
+
top: this.top + 'px',
|
|
53
|
+
left: this.left + 'px'
|
|
54
|
+
};
|
|
55
|
+
return this.visible && h("div", {
|
|
56
|
+
"class": "k-header k-drag-clue",
|
|
57
|
+
style: __assign(__assign({}, defaultStyle), dynamicStyle)
|
|
58
|
+
}, [h("span", {
|
|
59
|
+
"class": classNames('k-icon k-drag-status k-icon-with-modifier', this.operationClassName)
|
|
60
|
+
}, [h("span", {
|
|
61
|
+
"class": "k-icon k-icon-modifier"
|
|
62
|
+
})]), this.text]);
|
|
63
|
+
},
|
|
64
|
+
methods: {
|
|
65
|
+
show: function show(top, left, text, operationClassName) {
|
|
66
|
+
this.visible = true;
|
|
67
|
+
this.top = top;
|
|
68
|
+
this.left = left;
|
|
69
|
+
this.text = text;
|
|
70
|
+
this.operationClassName = operationClassName;
|
|
71
|
+
},
|
|
72
|
+
hide: function hide() {
|
|
73
|
+
this.visible = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
var TreeViewDragClue = TreeViewDragClueVue2;
|
|
78
|
+
export { TreeViewDragClue, TreeViewDragClueVue2 };
|
|
@@ -0,0 +1,69 @@
|
|
|
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 FieldsService from './utils/FieldsService';
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*/
|
|
11
|
+
export interface TreeViewItemProps {
|
|
12
|
+
item: any;
|
|
13
|
+
itemId: string;
|
|
14
|
+
treeGuid: string;
|
|
15
|
+
animate: boolean;
|
|
16
|
+
focusedItemId?: string;
|
|
17
|
+
tabbableItemId: string;
|
|
18
|
+
fieldsService: FieldsService;
|
|
19
|
+
itemUI?: any;
|
|
20
|
+
ariaMultiSelectable: boolean;
|
|
21
|
+
onItemClick?: any;
|
|
22
|
+
expandIcons?: boolean;
|
|
23
|
+
onExpandChange?: any;
|
|
24
|
+
onCheckChange?: any;
|
|
25
|
+
checkboxes?: boolean;
|
|
26
|
+
onFocusDomElNeeded?: any;
|
|
27
|
+
draggable?: boolean;
|
|
28
|
+
onPress?: any;
|
|
29
|
+
onDrag?: any;
|
|
30
|
+
onRelease?: any;
|
|
31
|
+
size?: null | 'small' | 'medium' | 'large' | string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export interface TreeViewItemState {
|
|
37
|
+
checkboxElement: any;
|
|
38
|
+
itemGuid: any;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @hidden
|
|
42
|
+
*/
|
|
43
|
+
export interface TreeViewItemComputed {
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
fieldsSvc: any;
|
|
46
|
+
currentTabIndex: number;
|
|
47
|
+
ariaExpanded?: boolean;
|
|
48
|
+
ariaChecked?: string | boolean;
|
|
49
|
+
ariaSelected?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @hidden
|
|
53
|
+
*/
|
|
54
|
+
export interface TreeViewItemMethods {
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
*/
|
|
60
|
+
export interface TreeViewItemData {
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @hidden
|
|
64
|
+
*/
|
|
65
|
+
export interface TreeViewItemAll extends Vue, TreeViewItemMethods, TreeViewItemData, TreeViewItemComputed, TreeViewItemState {
|
|
66
|
+
}
|
|
67
|
+
declare let TreeViewItemVue2: ComponentOptions<TreeViewItemAll, DefaultData<TreeViewItemData>, DefaultMethods<TreeViewItemAll>, TreeViewItemComputed, RecordPropsDefinition<TreeViewItemProps>>;
|
|
68
|
+
declare const TreeViewItem: DefineComponent<TreeViewItemProps, any, TreeViewItemData, TreeViewItemComputed, TreeViewItemMethods, {}, {}, {}, string, TreeViewItemProps, TreeViewItemProps, {}>;
|
|
69
|
+
export { TreeViewItem, TreeViewItemVue2 };
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
import { classNames, guid, Draggable, kendoThemeMaps } from '@progress/kendo-vue-common';
|
|
6
|
+
import { createId } from './utils/itemIdUtils';
|
|
7
|
+
import { isItemExpandedAndWithChildren, hasChildren } from './utils/itemUtils';
|
|
8
|
+
import { Reveal } from '@progress/kendo-vue-animation';
|
|
9
|
+
import { DOM_KENDO_ITEM_ID_FIELD, DOM_KENDO_TREEVIEW_GUID_FIELD } from './utils/consts';
|
|
10
|
+
var sizeMap = kendoThemeMaps.sizeMap; // tslint:enable:max-line-length
|
|
11
|
+
|
|
12
|
+
var TreeViewItemVue2 = {
|
|
13
|
+
name: 'KendoTreeViewItem',
|
|
14
|
+
props: {
|
|
15
|
+
item: Object,
|
|
16
|
+
itemId: String,
|
|
17
|
+
treeGuid: String,
|
|
18
|
+
animate: Boolean,
|
|
19
|
+
focusedItemId: String,
|
|
20
|
+
tabbableItemId: String,
|
|
21
|
+
fieldsService: Object,
|
|
22
|
+
itemUI: Object,
|
|
23
|
+
ariaMultiSelectable: Boolean,
|
|
24
|
+
expandIcons: Boolean,
|
|
25
|
+
checkboxes: Boolean,
|
|
26
|
+
onFocusDomElNeeded: Object,
|
|
27
|
+
draggable: Boolean,
|
|
28
|
+
size: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: 'medium',
|
|
31
|
+
validator: function validator(value) {
|
|
32
|
+
return [null, 'small', 'medium', 'large'].includes(value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
computed: {
|
|
37
|
+
fieldsSvc: function fieldsSvc() {
|
|
38
|
+
return this.$props.fieldsService;
|
|
39
|
+
},
|
|
40
|
+
currentTabIndex: function currentTabIndex() {
|
|
41
|
+
return (this.$props.focusedItemId || this.$props.tabbableItemId) === this.itemId ? 0 : -1;
|
|
42
|
+
},
|
|
43
|
+
ariaExpanded: function ariaExpanded() {
|
|
44
|
+
return this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()) ? Boolean(this.fieldsSvc.expanded(this.item)) : undefined;
|
|
45
|
+
},
|
|
46
|
+
ariaChecked: function ariaChecked() {
|
|
47
|
+
if (this.$props.checkboxes) {
|
|
48
|
+
if (this.fieldsSvc.checked(this.item)) {
|
|
49
|
+
return 'true';
|
|
50
|
+
} else {
|
|
51
|
+
return this.fieldsSvc.checkIndeterminate(this.item) ? 'mixed' : 'false';
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
ariaSelected: function ariaSelected() {
|
|
58
|
+
if (this.fieldsSvc.selected(this.item)) {
|
|
59
|
+
return true;
|
|
60
|
+
} else if (this.$props.ariaMultiSelectable) {
|
|
61
|
+
return this.fieldsSvc.disabled(this.item) ? undefined : false;
|
|
62
|
+
} else {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
created: function created() {
|
|
68
|
+
this.itemGuid = guid();
|
|
69
|
+
this.prevFocusedItemId = this.focusedItemId;
|
|
70
|
+
this.prevFieldsService = this.fieldsService;
|
|
71
|
+
this.prevItem = this.item;
|
|
72
|
+
},
|
|
73
|
+
watch: {
|
|
74
|
+
focusedItemId: function focusedItemId(_, oldValue) {
|
|
75
|
+
this.prevFocusedItemId = oldValue;
|
|
76
|
+
},
|
|
77
|
+
fieldsService: function fieldsService(_, oldValue) {
|
|
78
|
+
this.prevFieldsService = oldValue;
|
|
79
|
+
},
|
|
80
|
+
item: function item(_, oldValue) {
|
|
81
|
+
this.prevItem = oldValue;
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
mounted: function mounted() {
|
|
85
|
+
var focusedItemId = this.$props.focusedItemId;
|
|
86
|
+
var currentItemId = this.itemId;
|
|
87
|
+
|
|
88
|
+
if (focusedItemId && focusedItemId === currentItemId) {
|
|
89
|
+
this.$emit('focusdomelneeded', this.$el);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (this.checkboxElement) {
|
|
93
|
+
this.checkboxElement.indeterminate = this.fieldsSvc.checkIndeterminate(this.item);
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
updated: function updated() {
|
|
97
|
+
var focusedItemId = this.$props.focusedItemId;
|
|
98
|
+
|
|
99
|
+
if (focusedItemId && focusedItemId !== this.prevFocusedItemId && focusedItemId === this.itemId) {
|
|
100
|
+
this.$emit('focusdomelneeded', this.$el);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (this.checkboxElement) {
|
|
104
|
+
var indeterminate = this.fieldsSvc.checkIndeterminate(this.item);
|
|
105
|
+
|
|
106
|
+
if (indeterminate !== this.prevFieldsService.checkIndeterminate(this.prevItem)) {
|
|
107
|
+
this.checkboxElement.indeterminate = indeterminate;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
// @ts-ignore
|
|
112
|
+
setup: !gh ? undefined : function () {
|
|
113
|
+
var v3 = !!gh;
|
|
114
|
+
return {
|
|
115
|
+
v3: v3
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
// @ts-ignore
|
|
119
|
+
render: function render(createElement) {
|
|
120
|
+
var _this2 = this;
|
|
121
|
+
|
|
122
|
+
var h = gh || createElement;
|
|
123
|
+
|
|
124
|
+
var subitems = function subitems() {
|
|
125
|
+
return isItemExpandedAndWithChildren(this.item, this.fieldsSvc) ? h("ul", {
|
|
126
|
+
"class": "k-treeview-group",
|
|
127
|
+
role: "group",
|
|
128
|
+
attrs: this.v3 ? undefined : {
|
|
129
|
+
role: "group"
|
|
130
|
+
}
|
|
131
|
+
}, [this.fieldsSvc.children(this.item).map(function (item, index) {
|
|
132
|
+
return h(TreeViewItem, {
|
|
133
|
+
item: item,
|
|
134
|
+
attrs: this.v3 ? undefined : {
|
|
135
|
+
item: item,
|
|
136
|
+
itemId: createId(index, this.itemId),
|
|
137
|
+
treeGuid: this.$props.treeGuid,
|
|
138
|
+
animate: this.$props.animate,
|
|
139
|
+
focusedItemId: this.$props.focusedItemId,
|
|
140
|
+
tabbableItemId: this.$props.tabbableItemId,
|
|
141
|
+
fieldsService: this.$props.fieldsService,
|
|
142
|
+
itemUI: this.$props.itemUI,
|
|
143
|
+
checkboxes: this.$props.checkboxes,
|
|
144
|
+
ariaMultiSelectable: this.$props.ariaMultiSelectable,
|
|
145
|
+
draggable: this.$props.draggable,
|
|
146
|
+
expandIcons: this.$props.expandIcons,
|
|
147
|
+
size: this.$props.size
|
|
148
|
+
},
|
|
149
|
+
itemId: createId(index, this.itemId),
|
|
150
|
+
treeGuid: this.$props.treeGuid,
|
|
151
|
+
animate: this.$props.animate,
|
|
152
|
+
focusedItemId: this.$props.focusedItemId,
|
|
153
|
+
tabbableItemId: this.$props.tabbableItemId,
|
|
154
|
+
fieldsService: this.$props.fieldsService,
|
|
155
|
+
itemUI: this.$props.itemUI,
|
|
156
|
+
checkboxes: this.$props.checkboxes,
|
|
157
|
+
ariaMultiSelectable: this.$props.ariaMultiSelectable,
|
|
158
|
+
onItemclick: this.handleItemClick,
|
|
159
|
+
on: this.v3 ? undefined : {
|
|
160
|
+
"itemclick": this.handleItemClick,
|
|
161
|
+
"focusdomelneeded": this.handleFocusDomElNeeded,
|
|
162
|
+
"press": this.handlePress,
|
|
163
|
+
"drag": this.handleDrag,
|
|
164
|
+
"release": this.handleRelease,
|
|
165
|
+
"expandchange": this.handleExpandChange,
|
|
166
|
+
"checkchange": this.handleCheckChange
|
|
167
|
+
},
|
|
168
|
+
onFocusdomelneeded: this.handleFocusDomElNeeded,
|
|
169
|
+
draggable: this.$props.draggable,
|
|
170
|
+
onPress: this.handlePress,
|
|
171
|
+
onDrag: this.handleDrag,
|
|
172
|
+
onRelease: this.handleRelease,
|
|
173
|
+
expandIcons: this.$props.expandIcons,
|
|
174
|
+
onExpandchange: this.handleExpandChange,
|
|
175
|
+
onCheckchange: this.handleCheckChange,
|
|
176
|
+
key: index,
|
|
177
|
+
size: this.$props.size
|
|
178
|
+
});
|
|
179
|
+
}, this)]) : undefined;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
var renderExpandIcon = function renderExpandIcon() {
|
|
183
|
+
var renderExpand = this.$props.expandIcons && ( // If it is explicitly said that the item has children (even not loaded yet)
|
|
184
|
+
// or if the item actually has children, then render the icon.
|
|
185
|
+
this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()));
|
|
186
|
+
return renderExpand && h("span", {
|
|
187
|
+
"class": "k-treeview-toggle"
|
|
188
|
+
}, [h("span", {
|
|
189
|
+
"class": this.getIconClassName(),
|
|
190
|
+
onClick: this.handleExpandChange,
|
|
191
|
+
on: this.v3 ? undefined : {
|
|
192
|
+
"click": this.handleExpandChange
|
|
193
|
+
}
|
|
194
|
+
})]);
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
var renderCheckbox = function renderCheckbox() {
|
|
198
|
+
var _a;
|
|
199
|
+
|
|
200
|
+
var _this = this;
|
|
201
|
+
|
|
202
|
+
if (this.$props.checkboxes) {
|
|
203
|
+
var size = this.$props.size;
|
|
204
|
+
return h("div", {
|
|
205
|
+
"class": "k-checkbox-wrap"
|
|
206
|
+
}, [h("input", {
|
|
207
|
+
type: "checkbox",
|
|
208
|
+
attrs: this.v3 ? undefined : {
|
|
209
|
+
type: "checkbox",
|
|
210
|
+
id: this.itemGuid,
|
|
211
|
+
tabIndex: -1
|
|
212
|
+
},
|
|
213
|
+
"class": classNames('k-checkbox k-rounded-md', (_a = {}, _a["k-checkbox-" + (sizeMap[size] || size)] = size, _a)),
|
|
214
|
+
checked: this.v3 ? Boolean(this.fieldsSvc.checked(this.item)) : null,
|
|
215
|
+
domProps: this.v3 ? undefined : {
|
|
216
|
+
"checked": Boolean(this.fieldsSvc.checked(this.item))
|
|
217
|
+
},
|
|
218
|
+
id: this.itemGuid,
|
|
219
|
+
tabIndex: -1,
|
|
220
|
+
onChange: this.handleCheckChange,
|
|
221
|
+
on: this.v3 ? undefined : {
|
|
222
|
+
"change": this.handleCheckChange
|
|
223
|
+
},
|
|
224
|
+
ref: function ref(el) {
|
|
225
|
+
return _this.checkboxElement = el;
|
|
226
|
+
}
|
|
227
|
+
}), h("label", {
|
|
228
|
+
"class": "k-checkbox-label",
|
|
229
|
+
htmlFor: this.itemGuid,
|
|
230
|
+
attrs: this.v3 ? undefined : {
|
|
231
|
+
htmlFor: this.itemGuid
|
|
232
|
+
}
|
|
233
|
+
})]);
|
|
234
|
+
} else {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
var itemInPart = function itemInPart() {
|
|
240
|
+
return h("span", {
|
|
241
|
+
"class": this.getContentClassName(),
|
|
242
|
+
style: {
|
|
243
|
+
touchAction: 'none'
|
|
244
|
+
},
|
|
245
|
+
onClick: this.handleItemClick,
|
|
246
|
+
on: this.v3 ? undefined : {
|
|
247
|
+
"click": this.handleItemClick
|
|
248
|
+
}
|
|
249
|
+
}, [h("span", {
|
|
250
|
+
"class": "k-treeview-leaf-text"
|
|
251
|
+
}, [this.$props.itemUI ? h(this.$props.itemUI, {
|
|
252
|
+
item: this.item,
|
|
253
|
+
attrs: this.v3 ? undefined : {
|
|
254
|
+
item: this.item,
|
|
255
|
+
itemHierarchicalIndex: this.itemId
|
|
256
|
+
},
|
|
257
|
+
itemHierarchicalIndex: this.itemId
|
|
258
|
+
}) : this.fieldsSvc.text(this.item)])]);
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
return h("li", {
|
|
262
|
+
"class": this.getRootClassName(),
|
|
263
|
+
tabIndex: this.currentTabIndex,
|
|
264
|
+
attrs: this.v3 ? undefined : {
|
|
265
|
+
tabIndex: this.currentTabIndex,
|
|
266
|
+
role: "treeitem",
|
|
267
|
+
"aria-expanded": this.ariaExpanded,
|
|
268
|
+
"aria-selected": this.ariaSelected,
|
|
269
|
+
"aria-checked": this.ariaChecked,
|
|
270
|
+
"aria-disabled": this.fieldsSvc.disabled(this.item) ? true : undefined
|
|
271
|
+
},
|
|
272
|
+
role: "treeitem",
|
|
273
|
+
"aria-expanded": this.ariaExpanded,
|
|
274
|
+
"aria-selected": this.ariaSelected,
|
|
275
|
+
"aria-checked": this.ariaChecked,
|
|
276
|
+
"aria-disabled": this.fieldsSvc.disabled(this.item) ? true : undefined
|
|
277
|
+
}, [h("div", {
|
|
278
|
+
"class": "k-treeview-mid",
|
|
279
|
+
ref: this.assignDraggableMeta
|
|
280
|
+
}, [renderExpandIcon.call(this), renderCheckbox.call(this), this.$props.draggable ? // @ts-ignore function children
|
|
281
|
+
h(Draggable, {
|
|
282
|
+
onPress: this.handlePress,
|
|
283
|
+
on: this.v3 ? undefined : {
|
|
284
|
+
"press": this.handlePress,
|
|
285
|
+
"drag": this.handleDrag,
|
|
286
|
+
"release": this.handleRelease
|
|
287
|
+
},
|
|
288
|
+
onDrag: this.handleDrag,
|
|
289
|
+
onRelease: this.handleRelease
|
|
290
|
+
}, this.v3 ? function () {
|
|
291
|
+
return [itemInPart.call(_this2)];
|
|
292
|
+
} : [itemInPart.call(_this2)]) : itemInPart.call(this)]), this.$props.animate ? // @ts-ignore function children
|
|
293
|
+
h(Reveal, {
|
|
294
|
+
appear: this.ariaExpanded,
|
|
295
|
+
attrs: this.v3 ? undefined : {
|
|
296
|
+
appear: this.ariaExpanded,
|
|
297
|
+
transitionEnterDuration: 200,
|
|
298
|
+
transitionExitDuration: 200
|
|
299
|
+
},
|
|
300
|
+
transitionEnterDuration: 200,
|
|
301
|
+
transitionExitDuration: 200,
|
|
302
|
+
style: {
|
|
303
|
+
display: 'block'
|
|
304
|
+
}
|
|
305
|
+
}, this.v3 ? function () {
|
|
306
|
+
return [subitems.call(_this2)];
|
|
307
|
+
} : [subitems.call(_this2)]) : subitems.call(this)]);
|
|
308
|
+
},
|
|
309
|
+
methods: {
|
|
310
|
+
handleCheckChange: function handleCheckChange(e, subItem, subItemId) {
|
|
311
|
+
this.$emit('checkchange', e, subItem || this.item, subItemId || this.itemId);
|
|
312
|
+
},
|
|
313
|
+
handleExpandChange: function handleExpandChange(e, subItem, subItemId) {
|
|
314
|
+
this.$emit('expandchange', e, subItem || this.item, subItemId || this.itemId);
|
|
315
|
+
},
|
|
316
|
+
handleItemClick: function handleItemClick(e, subItem, subItemId) {
|
|
317
|
+
this.$emit('itemclick', e, subItem || this.item, subItemId || this.itemId);
|
|
318
|
+
},
|
|
319
|
+
handlePress: function handlePress(e, subItem, subItemId) {
|
|
320
|
+
this.$emit('press', e.event, subItem || this.item, subItemId || this.itemId);
|
|
321
|
+
},
|
|
322
|
+
handleDrag: function handleDrag(e, subItem, subItemId) {
|
|
323
|
+
this.$emit('drag', e.event, subItem || this.item, subItemId || this.itemId);
|
|
324
|
+
},
|
|
325
|
+
handleRelease: function handleRelease(e, subItem, subItemId) {
|
|
326
|
+
this.$emit('release', e.event, subItem || this.item, subItemId || this.itemId);
|
|
327
|
+
},
|
|
328
|
+
handleFocusDomElNeeded: function handleFocusDomElNeeded(e) {
|
|
329
|
+
this.$emit('focusdomelneeded', e);
|
|
330
|
+
},
|
|
331
|
+
getIconClassName: function getIconClassName() {
|
|
332
|
+
var expanded = this.fieldsSvc.expanded(this.item);
|
|
333
|
+
return classNames('k-icon', {
|
|
334
|
+
'k-i-expand': !expanded,
|
|
335
|
+
'k-i-collapse': expanded,
|
|
336
|
+
'k-i-loading': expanded && !hasChildren(this.item, this.fieldsSvc.getChildrenField())
|
|
337
|
+
});
|
|
338
|
+
},
|
|
339
|
+
getRootClassName: function getRootClassName() {
|
|
340
|
+
return classNames('k-treeview-item', {
|
|
341
|
+
'k-disabled': this.fieldsSvc.disabled(this.item)
|
|
342
|
+
});
|
|
343
|
+
},
|
|
344
|
+
getContentClassName: function getContentClassName() {
|
|
345
|
+
return classNames('k-treeview-leaf', {
|
|
346
|
+
'k-focus': this.$props.focusedItemId === this.itemId,
|
|
347
|
+
'k-selected': this.fieldsSvc.selected(this.item)
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
assignDraggableMeta: function assignDraggableMeta(element) {
|
|
351
|
+
if (element) {
|
|
352
|
+
element[DOM_KENDO_ITEM_ID_FIELD] = this.$props.itemId;
|
|
353
|
+
element[DOM_KENDO_TREEVIEW_GUID_FIELD] = this.$props.treeGuid;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
var TreeViewItem = TreeViewItemVue2;
|
|
359
|
+
export { TreeViewItem, TreeViewItemVue2 };
|