@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.
Files changed (87) hide show
  1. package/LICENSE.md +11 -0
  2. package/NOTICE.txt +86 -0
  3. package/README.md +53 -0
  4. package/dist/cdn/js/kendo-vue-treeview.js +1 -0
  5. package/dist/es/ItemRenderProps.d.ts +13 -0
  6. package/dist/es/ItemRenderProps.js +1 -0
  7. package/dist/es/TreeView.d.ts +45 -0
  8. package/dist/es/TreeView.js +359 -0
  9. package/dist/es/TreeViewDragAnalyzer.d.ts +135 -0
  10. package/dist/es/TreeViewDragAnalyzer.js +184 -0
  11. package/dist/es/TreeViewDragClue.d.ts +135 -0
  12. package/dist/es/TreeViewDragClue.js +78 -0
  13. package/dist/es/TreeViewItem.d.ts +69 -0
  14. package/dist/es/TreeViewItem.js +359 -0
  15. package/dist/es/TreeViewOperationDescriptors.d.ts +76 -0
  16. package/dist/es/TreeViewOperationDescriptors.js +1 -0
  17. package/dist/es/TreeViewProps.d.ts +122 -0
  18. package/dist/es/TreeViewProps.js +0 -0
  19. package/dist/es/additionalTypes.ts +9 -0
  20. package/dist/es/events.d.ts +135 -0
  21. package/dist/es/events.js +0 -0
  22. package/dist/es/handleTreeViewCheckChange.d.ts +67 -0
  23. package/dist/es/handleTreeViewCheckChange.js +195 -0
  24. package/dist/es/main.d.ts +12 -0
  25. package/dist/es/main.js +8 -0
  26. package/dist/es/moveTreeViewItem.d.ts +109 -0
  27. package/dist/es/moveTreeViewItem.js +156 -0
  28. package/dist/es/package-metadata.d.ts +5 -0
  29. package/dist/es/package-metadata.js +11 -0
  30. package/dist/es/processTreeViewItems.d.ts +51 -0
  31. package/dist/es/processTreeViewItems.js +166 -0
  32. package/dist/es/utils/FieldsService.d.ts +26 -0
  33. package/dist/es/utils/FieldsService.js +50 -0
  34. package/dist/es/utils/SortedPublicItemIds.d.ts +8 -0
  35. package/dist/es/utils/SortedPublicItemIds.js +26 -0
  36. package/dist/es/utils/consts.d.ts +40 -0
  37. package/dist/es/utils/consts.js +40 -0
  38. package/dist/es/utils/getItemIdUponKeyboardNavigation.d.ts +5 -0
  39. package/dist/es/utils/getItemIdUponKeyboardNavigation.js +77 -0
  40. package/dist/es/utils/itemIdUtils.d.ts +60 -0
  41. package/dist/es/utils/itemIdUtils.js +117 -0
  42. package/dist/es/utils/itemUtils.d.ts +45 -0
  43. package/dist/es/utils/itemUtils.js +191 -0
  44. package/dist/es/utils/misc.d.ts +9 -0
  45. package/dist/es/utils/misc.js +17 -0
  46. package/dist/npm/ItemRenderProps.d.ts +13 -0
  47. package/dist/npm/ItemRenderProps.js +3 -0
  48. package/dist/npm/TreeView.d.ts +45 -0
  49. package/dist/npm/TreeView.js +376 -0
  50. package/dist/npm/TreeViewDragAnalyzer.d.ts +135 -0
  51. package/dist/npm/TreeViewDragAnalyzer.js +186 -0
  52. package/dist/npm/TreeViewDragClue.d.ts +135 -0
  53. package/dist/npm/TreeViewDragClue.js +88 -0
  54. package/dist/npm/TreeViewItem.d.ts +69 -0
  55. package/dist/npm/TreeViewItem.js +373 -0
  56. package/dist/npm/TreeViewOperationDescriptors.d.ts +76 -0
  57. package/dist/npm/TreeViewOperationDescriptors.js +3 -0
  58. package/dist/npm/TreeViewProps.d.ts +122 -0
  59. package/dist/npm/TreeViewProps.js +2 -0
  60. package/dist/npm/additionalTypes.ts +9 -0
  61. package/dist/npm/events.d.ts +135 -0
  62. package/dist/npm/events.js +2 -0
  63. package/dist/npm/handleTreeViewCheckChange.d.ts +67 -0
  64. package/dist/npm/handleTreeViewCheckChange.js +199 -0
  65. package/dist/npm/main.d.ts +12 -0
  66. package/dist/npm/main.js +17 -0
  67. package/dist/npm/moveTreeViewItem.d.ts +109 -0
  68. package/dist/npm/moveTreeViewItem.js +159 -0
  69. package/dist/npm/package-metadata.d.ts +5 -0
  70. package/dist/npm/package-metadata.js +14 -0
  71. package/dist/npm/processTreeViewItems.d.ts +51 -0
  72. package/dist/npm/processTreeViewItems.js +169 -0
  73. package/dist/npm/utils/FieldsService.d.ts +26 -0
  74. package/dist/npm/utils/FieldsService.js +52 -0
  75. package/dist/npm/utils/SortedPublicItemIds.d.ts +8 -0
  76. package/dist/npm/utils/SortedPublicItemIds.js +28 -0
  77. package/dist/npm/utils/consts.d.ts +40 -0
  78. package/dist/npm/utils/consts.js +43 -0
  79. package/dist/npm/utils/getItemIdUponKeyboardNavigation.d.ts +5 -0
  80. package/dist/npm/utils/getItemIdUponKeyboardNavigation.js +80 -0
  81. package/dist/npm/utils/itemIdUtils.d.ts +60 -0
  82. package/dist/npm/utils/itemIdUtils.js +132 -0
  83. package/dist/npm/utils/itemUtils.d.ts +45 -0
  84. package/dist/npm/utils/itemUtils.js +205 -0
  85. package/dist/npm/utils/misc.d.ts +9 -0
  86. package/dist/npm/utils/misc.js +22 -0
  87. 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 };