vxe-pc-ui 4.15.13 → 4.15.15
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/dist/all.esm.js +709 -140
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/button/style.css +42 -72
- package/es/button/style.min.css +1 -1
- package/es/cascader/style.css +29 -33
- package/es/cascader/style.min.css +1 -1
- package/es/checkbox/src/button.js +3 -1
- package/es/checkbox/src/group.js +6 -1
- package/es/checkbox/style.css +22 -28
- package/es/checkbox/style.min.css +1 -1
- package/es/checkbox-button/style.css +151 -8
- package/es/checkbox-button/style.min.css +1 -1
- package/es/context-menu/style.css +14 -13
- package/es/context-menu/style.min.css +1 -1
- package/es/date-picker/src/date-picker.js +1 -1
- package/es/form/style.css +45 -95
- package/es/form/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +145 -46
- package/es/icon-picker/style.css +49 -23
- package/es/icon-picker/style.min.css +1 -1
- package/es/language/ar-EG.js +3 -0
- package/es/language/de-DE.js +3 -0
- package/es/language/en-US.js +3 -0
- package/es/language/es-ES.js +3 -0
- package/es/language/fr-FR.js +3 -0
- package/es/language/hu-HU.js +3 -0
- package/es/language/hy-AM.js +3 -0
- package/es/language/id-ID.js +3 -0
- package/es/language/it-IT.js +3 -0
- package/es/language/ja-JP.js +3 -0
- package/es/language/ko-KR.js +3 -0
- package/es/language/ms-MY.js +3 -0
- package/es/language/nb-NO.js +3 -0
- package/es/language/pt-BR.js +3 -0
- package/es/language/ru-RU.js +3 -0
- package/es/language/th-TH.js +3 -0
- package/es/language/ug-CN.js +3 -0
- package/es/language/uk-UA.js +3 -0
- package/es/language/uz-UZ.js +3 -0
- package/es/language/vi-VN.js +3 -0
- package/es/language/zh-CHT.js +3 -0
- package/es/language/zh-CN.js +3 -0
- package/es/list/src/list.js +14 -1
- package/es/list/style.css +26 -28
- package/es/list/style.min.css +1 -1
- package/es/menu/style.css +22 -29
- package/es/menu/style.min.css +1 -1
- package/es/notice-bar/style.css +14 -10
- package/es/notice-bar/style.min.css +1 -1
- package/es/radio/src/button.js +3 -1
- package/es/radio/src/group.js +6 -1
- package/es/radio/style.css +22 -30
- package/es/radio/style.min.css +1 -1
- package/es/radio-button/style.css +151 -8
- package/es/radio-button/style.min.css +1 -1
- package/es/select/style.css +42 -59
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree/src/tree.js +441 -18
- package/es/tree/src/util.js +15 -0
- package/es/tree/style.css +26 -25
- package/es/tree/style.min.css +1 -1
- package/es/tree-select/style.css +27 -31
- package/es/tree-select/style.min.css +1 -1
- package/es/ui/index.js +5 -2
- package/es/ui/src/log.js +1 -1
- package/es/upload/style.css +30 -41
- package/es/upload/style.min.css +1 -1
- package/es/vxe-button/style.css +42 -72
- package/es/vxe-button/style.min.css +1 -1
- package/es/vxe-cascader/style.css +29 -33
- package/es/vxe-cascader/style.min.css +1 -1
- package/es/vxe-checkbox/style.css +22 -28
- package/es/vxe-checkbox/style.min.css +1 -1
- package/es/vxe-checkbox-button/style.css +151 -8
- package/es/vxe-checkbox-button/style.min.css +1 -1
- package/es/vxe-context-menu/style.css +14 -13
- package/es/vxe-context-menu/style.min.css +1 -1
- package/es/vxe-form/style.css +45 -95
- package/es/vxe-form/style.min.css +1 -1
- package/es/vxe-icon-picker/style.css +49 -23
- package/es/vxe-icon-picker/style.min.css +1 -1
- package/es/vxe-list/style.css +26 -28
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-menu/style.css +22 -29
- package/es/vxe-menu/style.min.css +1 -1
- package/es/vxe-notice-bar/style.css +14 -10
- package/es/vxe-notice-bar/style.min.css +1 -1
- package/es/vxe-radio/style.css +22 -30
- package/es/vxe-radio/style.min.css +1 -1
- package/es/vxe-radio-button/style.css +151 -8
- package/es/vxe-radio-button/style.min.css +1 -1
- package/es/vxe-select/style.css +42 -59
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tree/style.css +26 -25
- package/es/vxe-tree/style.min.css +1 -1
- package/es/vxe-tree-select/style.css +27 -31
- package/es/vxe-tree-select/style.min.css +1 -1
- package/es/vxe-upload/style.css +30 -41
- package/es/vxe-upload/style.min.css +1 -1
- package/lib/button/style/style.css +42 -72
- package/lib/button/style/style.min.css +1 -1
- package/lib/cascader/style/style.css +29 -33
- package/lib/cascader/style/style.min.css +1 -1
- package/lib/checkbox/src/button.js +3 -1
- package/lib/checkbox/src/button.min.js +1 -1
- package/lib/checkbox/src/group.js +6 -0
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/checkbox/style/style.css +22 -28
- package/lib/checkbox/style/style.min.css +1 -1
- package/lib/checkbox-button/style/style.css +151 -8
- package/lib/checkbox-button/style/style.min.css +1 -1
- package/lib/context-menu/style/style.css +14 -13
- package/lib/context-menu/style/style.min.css +1 -1
- package/lib/date-picker/src/date-picker.js +1 -1
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/form/style/style.css +45 -95
- package/lib/form/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +143 -29
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/icon-picker/style/style.css +49 -23
- package/lib/icon-picker/style/style.min.css +1 -1
- package/lib/index.umd.js +732 -50
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +3 -0
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +3 -0
- package/lib/language/de-DE.js +3 -0
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +3 -0
- package/lib/language/en-US.js +3 -0
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +3 -0
- package/lib/language/es-ES.js +3 -0
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +3 -0
- package/lib/language/fr-FR.js +3 -0
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +3 -0
- package/lib/language/hu-HU.js +3 -0
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +3 -0
- package/lib/language/hy-AM.js +3 -0
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +3 -0
- package/lib/language/id-ID.js +3 -0
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +3 -0
- package/lib/language/it-IT.js +3 -0
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +3 -0
- package/lib/language/ja-JP.js +3 -0
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +3 -0
- package/lib/language/ko-KR.js +3 -0
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +3 -0
- package/lib/language/ms-MY.js +3 -0
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +3 -0
- package/lib/language/nb-NO.js +3 -0
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +3 -0
- package/lib/language/pt-BR.js +3 -0
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +3 -0
- package/lib/language/ru-RU.js +3 -0
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +3 -0
- package/lib/language/th-TH.js +3 -0
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +3 -0
- package/lib/language/ug-CN.js +3 -0
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +3 -0
- package/lib/language/uk-UA.js +3 -0
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +3 -0
- package/lib/language/uz-UZ.js +3 -0
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +3 -0
- package/lib/language/vi-VN.js +3 -0
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +3 -0
- package/lib/language/zh-CHT.js +3 -0
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +3 -0
- package/lib/language/zh-CN.js +3 -0
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +3 -0
- package/lib/list/src/list.js +19 -1
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/style/style.css +26 -28
- package/lib/list/style/style.min.css +1 -1
- package/lib/menu/style/style.css +22 -29
- package/lib/menu/style/style.min.css +1 -1
- package/lib/notice-bar/style/style.css +14 -10
- package/lib/notice-bar/style/style.min.css +1 -1
- package/lib/radio/src/button.js +3 -1
- package/lib/radio/src/button.min.js +1 -1
- package/lib/radio/src/group.js +7 -1
- package/lib/radio/src/group.min.js +1 -1
- package/lib/radio/style/style.css +22 -30
- package/lib/radio/style/style.min.css +1 -1
- package/lib/radio-button/style/style.css +151 -8
- package/lib/radio-button/style/style.min.css +1 -1
- package/lib/select/style/style.css +42 -59
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree/src/tree.js +525 -14
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/src/util.js +16 -0
- package/lib/tree/src/util.min.js +1 -1
- package/lib/tree/style/style.css +26 -25
- package/lib/tree/style/style.min.css +1 -1
- package/lib/tree-select/style/style.css +27 -31
- package/lib/tree-select/style/style.min.css +1 -1
- package/lib/ui/index.js +5 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/upload/style/style.css +30 -41
- package/lib/upload/style/style.min.css +1 -1
- package/lib/vxe-button/style/style.css +42 -72
- package/lib/vxe-button/style/style.min.css +1 -1
- package/lib/vxe-cascader/style/style.css +29 -33
- package/lib/vxe-cascader/style/style.min.css +1 -1
- package/lib/vxe-checkbox/style/style.css +22 -28
- package/lib/vxe-checkbox/style/style.min.css +1 -1
- package/lib/vxe-checkbox-button/style/style.css +151 -8
- package/lib/vxe-checkbox-button/style/style.min.css +1 -1
- package/lib/vxe-context-menu/style/style.css +14 -13
- package/lib/vxe-context-menu/style/style.min.css +1 -1
- package/lib/vxe-form/style/style.css +45 -95
- package/lib/vxe-form/style/style.min.css +1 -1
- package/lib/vxe-icon-picker/style/style.css +49 -23
- package/lib/vxe-icon-picker/style/style.min.css +1 -1
- package/lib/vxe-list/style/style.css +26 -28
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-menu/style/style.css +22 -29
- package/lib/vxe-menu/style/style.min.css +1 -1
- package/lib/vxe-notice-bar/style/style.css +14 -10
- package/lib/vxe-notice-bar/style/style.min.css +1 -1
- package/lib/vxe-radio/style/style.css +22 -30
- package/lib/vxe-radio/style/style.min.css +1 -1
- package/lib/vxe-radio-button/style/style.css +151 -8
- package/lib/vxe-radio-button/style/style.min.css +1 -1
- package/lib/vxe-select/style/style.css +42 -59
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tree/style/style.css +26 -25
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/lib/vxe-tree-select/style/style.css +27 -31
- package/lib/vxe-tree-select/style/style.min.css +1 -1
- package/lib/vxe-upload/style/style.css +30 -41
- package/lib/vxe-upload/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/checkbox/src/button.ts +3 -1
- package/packages/checkbox/src/group.ts +6 -1
- package/packages/date-picker/src/date-picker.ts +1 -1
- package/packages/icon-picker/src/icon-picker.ts +157 -48
- package/packages/language/ar-EG.ts +3 -0
- package/packages/language/de-DE.ts +3 -0
- package/packages/language/en-US.ts +3 -0
- package/packages/language/es-ES.ts +3 -0
- package/packages/language/fr-FR.ts +3 -0
- package/packages/language/hu-HU.ts +3 -0
- package/packages/language/hy-AM.ts +3 -0
- package/packages/language/id-ID.ts +3 -0
- package/packages/language/it-IT.ts +3 -0
- package/packages/language/ja-JP.ts +3 -0
- package/packages/language/ko-KR.ts +3 -0
- package/packages/language/ms-MY.ts +3 -0
- package/packages/language/nb-NO.ts +3 -0
- package/packages/language/pt-BR.ts +3 -0
- package/packages/language/ru-RU.ts +3 -0
- package/packages/language/th-TH.ts +3 -0
- package/packages/language/ug-CN.ts +3 -0
- package/packages/language/uk-UA.ts +3 -0
- package/packages/language/uz-UZ.ts +3 -0
- package/packages/language/vi-VN.ts +3 -0
- package/packages/language/zh-CHT.ts +3 -0
- package/packages/language/zh-CN.ts +3 -0
- package/packages/list/src/list.ts +14 -1
- package/packages/radio/src/button.ts +3 -1
- package/packages/radio/src/group.ts +6 -1
- package/packages/tree/src/tree.ts +443 -14
- package/packages/tree/src/util.ts +17 -1
- package/packages/ui/index.ts +4 -1
- package/styles/components/button.scss +56 -137
- package/styles/components/cascader.scss +25 -27
- package/styles/components/checkbox-button.scss +65 -13
- package/styles/components/checkbox.scss +22 -24
- package/styles/components/context-menu.scss +15 -13
- package/styles/components/form.scss +57 -134
- package/styles/components/icon-picker.scss +56 -27
- package/styles/components/link.scss +1 -1
- package/styles/components/list.scss +24 -26
- package/styles/components/menu.scss +23 -25
- package/styles/components/notice-bar.scss +15 -13
- package/styles/components/radio-button.scss +65 -13
- package/styles/components/radio.scss +22 -23
- package/styles/components/select.scss +36 -62
- package/styles/components/tree-select.scss +26 -27
- package/styles/components/tree.scss +16 -14
- package/styles/components/upload.scss +28 -30
- package/styles/helpers/baseMixin.scss +2 -2
- package/styles/helpers/themeStatus.scss +58 -0
- package/styles/theme/base.scss +11 -3
- package/types/all.d.ts +205 -0
- package/types/components/checkbox-group.d.ts +3 -1
- package/types/components/checkbox.d.ts +1 -1
- package/types/components/icon-picker.d.ts +28 -4
- package/types/components/list.d.ts +2 -2
- package/types/components/radio-group.d.ts +3 -1
- package/types/components/tree.d.ts +36 -0
- /package/es/icon/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
- /package/es/icon/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
- /package/es/icon/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
- /package/es/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
- /package/es/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
- /package/es/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
- /package/lib/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
- /package/lib/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
- /package/lib/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, h, reactive, PropType, computed, VNode, watch, onBeforeUnmount, nextTick, onMounted, provide } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import { VxeUI, createEvent, useSize, globalEvents, globalResize, renderEmptyElement } from '../../ui'
|
|
4
|
-
import { calcTreeLine } from './util'
|
|
4
|
+
import { calcTreeLine, getItemCacheObj } from './util'
|
|
5
5
|
import { createComponentLog } from '../../ui/src/log'
|
|
6
6
|
import { getCrossTreeDragNodeInfo } from './store'
|
|
7
7
|
import XEUtils from 'xe-utils'
|
|
@@ -13,7 +13,7 @@ import VxeLoadingComponent from '../../loading'
|
|
|
13
13
|
|
|
14
14
|
import type { TreeReactData, VxeTreeEmits, VxeTreePropTypes, TreeInternalData, TreePrivateRef, VxeTreeDefines, VxeTreePrivateComputed, TreePrivateMethods, TreeMethods, ValueOf, VxeTreeConstructor, VxeTreePrivateMethods, VxeComponentStyleType } from '../../../types'
|
|
15
15
|
|
|
16
|
-
const { errLog } = createComponentLog('tree')
|
|
16
|
+
const { warnLog, errLog } = createComponentLog('tree')
|
|
17
17
|
|
|
18
18
|
const { menus, getConfig, getI18n, getIcon } = VxeUI
|
|
19
19
|
|
|
@@ -47,6 +47,9 @@ function createInternalData (): TreeInternalData {
|
|
|
47
47
|
rowHeight: 0
|
|
48
48
|
},
|
|
49
49
|
|
|
50
|
+
removeRowMaps: {},
|
|
51
|
+
insertRowMaps: {},
|
|
52
|
+
|
|
50
53
|
// prevDragNode: null,
|
|
51
54
|
// prevDragToChild: false,
|
|
52
55
|
// prevDragPos: ''
|
|
@@ -70,15 +73,17 @@ function createReactData ():TreeReactData {
|
|
|
70
73
|
treeList: [],
|
|
71
74
|
updateExpandedFlag: 1,
|
|
72
75
|
updateCheckboxFlag: 1,
|
|
76
|
+
insertRowFlag: 1,
|
|
77
|
+
removeRowFlag: 1,
|
|
73
78
|
dragNode: null,
|
|
74
79
|
dragTipText: ''
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
let crossTreeDragNodeObj: {
|
|
84
|
+
$oldTree: VxeTreeConstructor & VxeTreePrivateMethods
|
|
85
|
+
$newTree: (VxeTreeConstructor & VxeTreePrivateMethods) | null
|
|
86
|
+
} | null = null
|
|
82
87
|
|
|
83
88
|
export default defineVxeComponent({
|
|
84
89
|
name: 'VxeTree',
|
|
@@ -216,6 +221,8 @@ export default defineVxeComponent({
|
|
|
216
221
|
'node-dragstart',
|
|
217
222
|
'node-dragover',
|
|
218
223
|
'node-dragend',
|
|
224
|
+
'node-remove-dragend',
|
|
225
|
+
'node-insert-dragend',
|
|
219
226
|
'node-expand',
|
|
220
227
|
'node-menu',
|
|
221
228
|
'menu-click'
|
|
@@ -1402,6 +1409,147 @@ export default defineVxeComponent({
|
|
|
1402
1409
|
recalculate()
|
|
1403
1410
|
}
|
|
1404
1411
|
|
|
1412
|
+
const insertTreeNode = (newRecords: any[], isAppend: boolean) => {
|
|
1413
|
+
const { treeFullData, nodeMaps } = internalData
|
|
1414
|
+
const keyField = computeKeyField.value
|
|
1415
|
+
const parentField = computeParentField.value
|
|
1416
|
+
const childrenField = computeChildrenField.value
|
|
1417
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
1418
|
+
const funcName = isAppend ? 'push' : 'unshift'
|
|
1419
|
+
newRecords.forEach((item) => {
|
|
1420
|
+
const parentRowId = item[parentField]
|
|
1421
|
+
const nodeid = getNodeId(item)
|
|
1422
|
+
const matchObj = parentRowId ? XEUtils.findTree(treeFullData, (item) => parentRowId === item[keyField], { children: mapChildrenField }) : null
|
|
1423
|
+
const itemRest = getItemCacheObj(item)
|
|
1424
|
+
if (matchObj) {
|
|
1425
|
+
const { item: parentItem } = matchObj
|
|
1426
|
+
const parentRest = nodeMaps[getNodeId(parentItem)]
|
|
1427
|
+
const parentLevel = parentRest ? parentRest.level : 0
|
|
1428
|
+
let pChilds = parentItem[childrenField]
|
|
1429
|
+
let pMapChilds = parentItem[mapChildrenField]
|
|
1430
|
+
if (!XEUtils.isArray(pChilds)) {
|
|
1431
|
+
pChilds = parentItem[childrenField] = []
|
|
1432
|
+
}
|
|
1433
|
+
if (!XEUtils.isArray(pMapChilds)) {
|
|
1434
|
+
pMapChilds = parentItem[mapChildrenField] = []
|
|
1435
|
+
}
|
|
1436
|
+
itemRest.parent = parentItem
|
|
1437
|
+
itemRest.items = pChilds
|
|
1438
|
+
itemRest.level = parentLevel
|
|
1439
|
+
pChilds[funcName](item)
|
|
1440
|
+
pMapChilds[funcName](item)
|
|
1441
|
+
} else {
|
|
1442
|
+
if (parentRowId) {
|
|
1443
|
+
warnLog('vxe.error.unableInsert')
|
|
1444
|
+
}
|
|
1445
|
+
treeFullData[funcName](item)
|
|
1446
|
+
}
|
|
1447
|
+
nodeMaps[nodeid] = itemRest
|
|
1448
|
+
})
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
const handleInsertNodeAt = (records: any[], targetNodeOrNodeid: any, isInsertNextNode?: any) => {
|
|
1452
|
+
const { transform } = props
|
|
1453
|
+
const { treeFullData, nodeMaps } = internalData
|
|
1454
|
+
const keyField = computeKeyField.value
|
|
1455
|
+
const parentField = computeParentField.value
|
|
1456
|
+
const childrenField = computeChildrenField.value
|
|
1457
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
1458
|
+
if (!transform) {
|
|
1459
|
+
errLog('vxe.error.reqSupportProp', ['insert() | insertAt() | insertNextAt()', 'transform'])
|
|
1460
|
+
return Promise.resolve({ node: null, nodes: [] })
|
|
1461
|
+
}
|
|
1462
|
+
if (!XEUtils.isArray(records)) {
|
|
1463
|
+
records = [records]
|
|
1464
|
+
}
|
|
1465
|
+
let targetNode = targetNodeOrNodeid
|
|
1466
|
+
if (XEUtils.isString(targetNodeOrNodeid) || XEUtils.isNumber(targetNodeOrNodeid)) {
|
|
1467
|
+
const nodeRest = nodeMaps[targetNodeOrNodeid]
|
|
1468
|
+
if (nodeRest) {
|
|
1469
|
+
targetNode = nodeRest.item
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
if (!records.length) {
|
|
1473
|
+
return Promise.resolve({ node: null, nodes: [] })
|
|
1474
|
+
}
|
|
1475
|
+
const newRecords = records.map(record => XEUtils.assign({ [mapChildrenField]: [], [childrenField]: [] }, record))
|
|
1476
|
+
const treeRecords = XEUtils.toArrayTree(newRecords, { key: keyField, parentKey: parentField, children: childrenField })
|
|
1477
|
+
|
|
1478
|
+
if (XEUtils.eqNull(targetNode)) {
|
|
1479
|
+
insertTreeNode(newRecords, false)
|
|
1480
|
+
} else {
|
|
1481
|
+
if (targetNode === -1) {
|
|
1482
|
+
insertTreeNode(newRecords, true)
|
|
1483
|
+
} else {
|
|
1484
|
+
const matchMapObj = XEUtils.findTree(treeFullData, item => targetNode[keyField] === item[keyField], { children: mapChildrenField })
|
|
1485
|
+
if (matchMapObj) {
|
|
1486
|
+
const { parent: parentNode } = matchMapObj
|
|
1487
|
+
const parentMapChilds = parentNode ? parentNode[mapChildrenField] : treeFullData
|
|
1488
|
+
const parentRest = nodeMaps[getNodeId(parentNode)]
|
|
1489
|
+
const parentLevel = parentRest ? parentRest.level : 0
|
|
1490
|
+
treeRecords.forEach((row, i) => {
|
|
1491
|
+
if (parentNode) {
|
|
1492
|
+
if (row[parentField] !== parentNode[keyField]) {
|
|
1493
|
+
errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, `${parentField}=${parentNode[keyField]}`])
|
|
1494
|
+
row[parentField] = parentNode[keyField]
|
|
1495
|
+
}
|
|
1496
|
+
} else {
|
|
1497
|
+
if (row[parentField] !== null) {
|
|
1498
|
+
if (!XEUtils.eqNull(row[parentField])) {
|
|
1499
|
+
errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, 'null'])
|
|
1500
|
+
}
|
|
1501
|
+
row[parentField] = null
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
let targetIndex = matchMapObj.index + i
|
|
1505
|
+
if (isInsertNextNode) {
|
|
1506
|
+
targetIndex = targetIndex + 1
|
|
1507
|
+
}
|
|
1508
|
+
parentMapChilds.splice(targetIndex, 0, row)
|
|
1509
|
+
})
|
|
1510
|
+
XEUtils.eachTree(treeRecords, (item) => {
|
|
1511
|
+
const nodeid = getNodeId(item)
|
|
1512
|
+
const nodeRest = getItemCacheObj(item)
|
|
1513
|
+
nodeRest.level = parentLevel
|
|
1514
|
+
if (item[childrenField]) {
|
|
1515
|
+
item[mapChildrenField] = item[childrenField]
|
|
1516
|
+
}
|
|
1517
|
+
nodeMaps[nodeid] = nodeRest
|
|
1518
|
+
}, { children: childrenField })
|
|
1519
|
+
// 源
|
|
1520
|
+
if (parentNode) {
|
|
1521
|
+
const matchObj = XEUtils.findTree(treeFullData, item => targetNode[keyField] === item[keyField], { children: childrenField })
|
|
1522
|
+
if (matchObj) {
|
|
1523
|
+
const parentChilds = matchObj.items
|
|
1524
|
+
let targetIndex = matchObj.index
|
|
1525
|
+
if (isInsertNextNode) {
|
|
1526
|
+
targetIndex = targetIndex + 1
|
|
1527
|
+
}
|
|
1528
|
+
parentChilds.splice(targetIndex, 0, ...treeRecords)
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
} else {
|
|
1532
|
+
warnLog('vxe.error.unableInsert')
|
|
1533
|
+
insertTreeNode(newRecords, true)
|
|
1534
|
+
}
|
|
1535
|
+
}
|
|
1536
|
+
}
|
|
1537
|
+
reactData.insertRowFlag++
|
|
1538
|
+
cacheNodeMap()
|
|
1539
|
+
handleData(true)
|
|
1540
|
+
updateAfterDataIndex()
|
|
1541
|
+
updateCheckboxStatus()
|
|
1542
|
+
if (reactData.scrollYLoad) {
|
|
1543
|
+
updateYSpace()
|
|
1544
|
+
}
|
|
1545
|
+
return nextTick().then(() => {
|
|
1546
|
+
return {
|
|
1547
|
+
node: newRecords.length ? newRecords[newRecords.length - 1] : null,
|
|
1548
|
+
nodes: newRecords
|
|
1549
|
+
}
|
|
1550
|
+
})
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1405
1553
|
const treeMethods: TreeMethods = {
|
|
1406
1554
|
dispatchEvent,
|
|
1407
1555
|
getNodeId,
|
|
@@ -1802,7 +1950,91 @@ export default defineVxeComponent({
|
|
|
1802
1950
|
}
|
|
1803
1951
|
return recalculate()
|
|
1804
1952
|
},
|
|
1805
|
-
clearScroll
|
|
1953
|
+
clearScroll,
|
|
1954
|
+
insert (records) {
|
|
1955
|
+
return handleInsertNodeAt(records, null)
|
|
1956
|
+
},
|
|
1957
|
+
insertAt (records, targetNodeOrNodeid) {
|
|
1958
|
+
return handleInsertNodeAt(records, targetNodeOrNodeid)
|
|
1959
|
+
},
|
|
1960
|
+
insertNextAt (records, targetNodeOrNodeid) {
|
|
1961
|
+
return handleInsertNodeAt(records, targetNodeOrNodeid, true)
|
|
1962
|
+
},
|
|
1963
|
+
remove (nodes) {
|
|
1964
|
+
const { transform } = props
|
|
1965
|
+
const { treeFullData } = internalData
|
|
1966
|
+
const childrenField = computeChildrenField.value
|
|
1967
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
1968
|
+
if (!transform) {
|
|
1969
|
+
errLog('vxe.error.reqSupportProp', ['remove()', 'transform'])
|
|
1970
|
+
return Promise.resolve({ node: null, nodes: [] })
|
|
1971
|
+
}
|
|
1972
|
+
let delList: any[] = []
|
|
1973
|
+
if (!nodes) {
|
|
1974
|
+
nodes = treeFullData
|
|
1975
|
+
} else if (!XEUtils.isArray(nodes)) {
|
|
1976
|
+
nodes = [nodes]
|
|
1977
|
+
}
|
|
1978
|
+
if (!nodes.length) {
|
|
1979
|
+
return Promise.resolve({ node: null, nodes: [] })
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
// 从数据源中移除
|
|
1983
|
+
if (treeFullData === nodes) {
|
|
1984
|
+
nodes = delList = treeFullData.slice(0)
|
|
1985
|
+
internalData.treeFullData = []
|
|
1986
|
+
} else {
|
|
1987
|
+
nodes.forEach((item: any) => {
|
|
1988
|
+
const nodeid = getNodeId(item)
|
|
1989
|
+
const matchMapObj = XEUtils.findTree(treeFullData, item => nodeid === getNodeId(item), { children: mapChildrenField })
|
|
1990
|
+
if (matchMapObj) {
|
|
1991
|
+
const rItems = matchMapObj.items.splice(matchMapObj.index, 1)
|
|
1992
|
+
delList.push(rItems[0])
|
|
1993
|
+
}
|
|
1994
|
+
const matchObj = XEUtils.findTree(treeFullData, item => nodeid === getNodeId(item), { children: childrenField })
|
|
1995
|
+
if (matchObj) {
|
|
1996
|
+
const rItems = matchObj.items.splice(matchObj.index, 1)
|
|
1997
|
+
delList.push(rItems[0])
|
|
1998
|
+
}
|
|
1999
|
+
})
|
|
2000
|
+
}
|
|
2001
|
+
reactData.removeRowFlag++
|
|
2002
|
+
reactData.insertRowFlag++
|
|
2003
|
+
cacheNodeMap()
|
|
2004
|
+
handleData(true)
|
|
2005
|
+
updateAfterDataIndex()
|
|
2006
|
+
updateCheckboxStatus()
|
|
2007
|
+
if (reactData.scrollYLoad) {
|
|
2008
|
+
updateYSpace()
|
|
2009
|
+
}
|
|
2010
|
+
return nextTick().then(() => {
|
|
2011
|
+
return recalculate()
|
|
2012
|
+
}).then(() => {
|
|
2013
|
+
return { node: delList.length ? delList[delList.length - 1] : null, nodes: delList }
|
|
2014
|
+
})
|
|
2015
|
+
},
|
|
2016
|
+
getInsertRecords () {
|
|
2017
|
+
const { insertRowMaps } = internalData
|
|
2018
|
+
const insertRecords: any[] = []
|
|
2019
|
+
XEUtils.each(insertRowMaps, (row) => {
|
|
2020
|
+
insertRecords.push(row)
|
|
2021
|
+
})
|
|
2022
|
+
return insertRecords
|
|
2023
|
+
},
|
|
2024
|
+
getRemoveRecords () {
|
|
2025
|
+
const { removeRowMaps } = internalData
|
|
2026
|
+
const removeRecords: any[] = []
|
|
2027
|
+
XEUtils.each(removeRowMaps, (row) => {
|
|
2028
|
+
removeRecords.push(row)
|
|
2029
|
+
})
|
|
2030
|
+
return removeRecords
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
const handleNodeDragEndClearStatus = () => {
|
|
2035
|
+
clearNodeDragData()
|
|
2036
|
+
clearCrossTreeDragStatus()
|
|
2037
|
+
recalculate()
|
|
1806
2038
|
}
|
|
1807
2039
|
|
|
1808
2040
|
const clearNodeDropOrigin = () => {
|
|
@@ -1857,7 +2089,7 @@ export default defineVxeComponent({
|
|
|
1857
2089
|
}
|
|
1858
2090
|
|
|
1859
2091
|
const clearCrossTreeDragStatus = () => {
|
|
1860
|
-
|
|
2092
|
+
crossTreeDragNodeObj = null
|
|
1861
2093
|
crossTreeDragNodeInfo.node = null
|
|
1862
2094
|
}
|
|
1863
2095
|
|
|
@@ -2242,6 +2474,18 @@ export default defineVxeComponent({
|
|
|
2242
2474
|
const { dragNode } = reactData
|
|
2243
2475
|
const { nodeMaps, prevDragNode, prevDragPos, prevDragToChild } = internalData
|
|
2244
2476
|
const hasChildField = computeHasChildField.value
|
|
2477
|
+
const dragConfig = computeDragOpts.value
|
|
2478
|
+
const { isCrossDrag, isCrossTreeDrag } = dragConfig
|
|
2479
|
+
// 跨树拖拽
|
|
2480
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj) {
|
|
2481
|
+
const { $newTree } = crossTreeDragNodeObj
|
|
2482
|
+
if ($newTree && $newTree.xID !== $xeTree.xID) {
|
|
2483
|
+
if (isCrossDrag) {
|
|
2484
|
+
$newTree.handleCrossTreeNodeDragInsertEvent(evnt)
|
|
2485
|
+
}
|
|
2486
|
+
return
|
|
2487
|
+
}
|
|
2488
|
+
}
|
|
2245
2489
|
if (lazy && prevDragToChild) {
|
|
2246
2490
|
// 懒加载
|
|
2247
2491
|
const newNodeid = getNodeId(prevDragNode)
|
|
@@ -2322,17 +2566,194 @@ export default defineVxeComponent({
|
|
|
2322
2566
|
/**
|
|
2323
2567
|
* 处理跨树拖拽完成
|
|
2324
2568
|
*/
|
|
2325
|
-
handleCrossTreeNodeDragFinishEvent () {
|
|
2569
|
+
handleCrossTreeNodeDragFinishEvent (evnt: DragEvent) {
|
|
2570
|
+
const { treeList } = reactData
|
|
2571
|
+
const { nodeMaps } = internalData
|
|
2572
|
+
const dragOpts = computeDragOpts.value
|
|
2573
|
+
const { animation, isCrossTreeDrag } = dragOpts
|
|
2574
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
2575
|
+
const el = refElem.value
|
|
2576
|
+
if (!el) {
|
|
2577
|
+
return
|
|
2578
|
+
}
|
|
2579
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && crossTreeDragNodeInfo) {
|
|
2580
|
+
const { node: dragNode } = crossTreeDragNodeInfo
|
|
2581
|
+
if (dragNode) {
|
|
2582
|
+
const dragNodeid = getNodeId(dragNode)
|
|
2583
|
+
const dragNodeRest = nodeMaps[dragNodeid]
|
|
2584
|
+
let dragNodeHeight = 0
|
|
2585
|
+
let rsIndex = -1
|
|
2586
|
+
if (dragNodeRest) {
|
|
2587
|
+
if (animation) {
|
|
2588
|
+
const oldItemEl = el.querySelector<HTMLElement>(`.vxe-tree--node-wrapper[nodeid="${dragNodeid}"]`)
|
|
2589
|
+
const targetItemEl = oldItemEl
|
|
2590
|
+
if (targetItemEl) {
|
|
2591
|
+
dragNodeHeight = targetItemEl.offsetHeight
|
|
2592
|
+
}
|
|
2593
|
+
}
|
|
2594
|
+
rsIndex = dragNodeRest.$index
|
|
2595
|
+
}
|
|
2596
|
+
const dragRangeList = rsIndex > -1 && rsIndex < treeList.length - 1 ? treeList.slice(rsIndex + 1) : []
|
|
2597
|
+
const dragList = XEUtils.toTreeArray([dragNode], {
|
|
2598
|
+
updated: true,
|
|
2599
|
+
children: mapChildrenField
|
|
2600
|
+
})
|
|
2601
|
+
$xeTree.remove(dragList).then(() => {
|
|
2602
|
+
if (animation && dragNodeHeight && dragRangeList.length) {
|
|
2603
|
+
const wrapperEl = el
|
|
2604
|
+
const dtClss: string[] = []
|
|
2605
|
+
dragRangeList.forEach(item => {
|
|
2606
|
+
const nodeid = getNodeId(item)
|
|
2607
|
+
dtClss.push(`.vxe-tree--node-wrapper[nodeid="${nodeid}"]`)
|
|
2608
|
+
})
|
|
2609
|
+
const dtTrList = wrapperEl.querySelectorAll<HTMLElement>(dtClss.join(','))
|
|
2610
|
+
moveRowAnimateToTb(dtTrList, dragNodeHeight)
|
|
2611
|
+
}
|
|
2612
|
+
})
|
|
2613
|
+
dispatchEvent('node-remove-dragend', {
|
|
2614
|
+
node: dragNode
|
|
2615
|
+
}, evnt)
|
|
2616
|
+
handleNodeDragEndClearStatus()
|
|
2617
|
+
}
|
|
2618
|
+
}
|
|
2326
2619
|
},
|
|
2327
2620
|
/**
|
|
2328
2621
|
* 处理跨树拖至新的空树
|
|
2329
2622
|
*/
|
|
2330
|
-
|
|
2623
|
+
handleCrossTreeNodeDragoverEmptyEvent (evnt: DragEvent) {
|
|
2624
|
+
const { treeList } = reactData
|
|
2625
|
+
const dragOpts = computeDragOpts.value
|
|
2626
|
+
const { isCrossTreeDrag } = dragOpts
|
|
2627
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && !treeList.length) {
|
|
2628
|
+
const { $oldTree, $newTree } = crossTreeDragNodeObj
|
|
2629
|
+
if ($oldTree) {
|
|
2630
|
+
const oldTreeReactData = $oldTree as unknown as TreeReactData
|
|
2631
|
+
if ($oldTree.xID !== $xeTree.xID) {
|
|
2632
|
+
if ($newTree && $newTree.xID !== $xeTree.xID) {
|
|
2633
|
+
$newTree.hideCrossTreeNodeDropClearStatus()
|
|
2634
|
+
}
|
|
2635
|
+
evnt.preventDefault()
|
|
2636
|
+
$oldTree.hideCrossTreeNodeDropClearStatus()
|
|
2637
|
+
crossTreeDragNodeObj.$newTree = $xeTree
|
|
2638
|
+
internalData.prevDragNode = null
|
|
2639
|
+
reactData.dragTipText = oldTreeReactData.dragTipText
|
|
2640
|
+
showDropTip(evnt, evnt.currentTarget as HTMLDivElement, true, '')
|
|
2641
|
+
}
|
|
2642
|
+
}
|
|
2643
|
+
}
|
|
2331
2644
|
},
|
|
2332
2645
|
/**
|
|
2333
2646
|
* 处理跨树拖插入
|
|
2334
2647
|
*/
|
|
2335
|
-
|
|
2648
|
+
handleCrossTreeNodeDragInsertEvent (evnt: DragEvent) {
|
|
2649
|
+
const { prevDragNode, prevDragPos, prevDragToChild } = internalData
|
|
2650
|
+
const dragOpts = computeDragOpts.value
|
|
2651
|
+
const { animation, isSelfToChildDrag, isCrossTreeDrag, dragEndMethod, dragToChildMethod } = dragOpts
|
|
2652
|
+
const parentField = computeParentField.value
|
|
2653
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
2654
|
+
const childrenField = computeChildrenField.value
|
|
2655
|
+
// 跨表拖拽
|
|
2656
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && crossTreeDragNodeInfo) {
|
|
2657
|
+
const { node: oldNode } = crossTreeDragNodeInfo
|
|
2658
|
+
const { $oldTree } = crossTreeDragNodeObj
|
|
2659
|
+
const el = refElem.value
|
|
2660
|
+
if (!el) {
|
|
2661
|
+
return
|
|
2662
|
+
}
|
|
2663
|
+
if ($oldTree && oldNode) {
|
|
2664
|
+
const dragNode = oldNode
|
|
2665
|
+
let dragOffsetIndex = -1
|
|
2666
|
+
if (prevDragNode) {
|
|
2667
|
+
dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
2668
|
+
}
|
|
2669
|
+
const dragParams = {
|
|
2670
|
+
oldNode: dragNode,
|
|
2671
|
+
newNode: prevDragNode,
|
|
2672
|
+
dragNode,
|
|
2673
|
+
dragPos: prevDragPos as 'top' | 'bottom',
|
|
2674
|
+
dragToChild: !!prevDragToChild,
|
|
2675
|
+
offsetIndex: dragOffsetIndex as 0 | 1
|
|
2676
|
+
}
|
|
2677
|
+
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild
|
|
2678
|
+
const errRest = {
|
|
2679
|
+
status: false
|
|
2680
|
+
}
|
|
2681
|
+
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
2682
|
+
if (!status) {
|
|
2683
|
+
if ($oldTree) {
|
|
2684
|
+
if ($oldTree.xID !== $xeTree.xID) {
|
|
2685
|
+
$oldTree.handleCrossTreeNodeDragCancelEvent(evnt)
|
|
2686
|
+
}
|
|
2687
|
+
}
|
|
2688
|
+
handleNodeDragEndClearStatus()
|
|
2689
|
+
return errRest
|
|
2690
|
+
}
|
|
2691
|
+
let insertRest: Promise<any> = Promise.resolve()
|
|
2692
|
+
const dragList = XEUtils.toTreeArray([dragNode], {
|
|
2693
|
+
updated: true,
|
|
2694
|
+
children: mapChildrenField
|
|
2695
|
+
})
|
|
2696
|
+
$oldTree.handleCrossTreeNodeDragFinishEvent(evnt)
|
|
2697
|
+
if (prevDragNode) {
|
|
2698
|
+
dragNode[parentField] = prevDragNode[parentField]
|
|
2699
|
+
} else {
|
|
2700
|
+
dragNode[parentField] = null
|
|
2701
|
+
}
|
|
2702
|
+
dragList.forEach(row => {
|
|
2703
|
+
row[childrenField] = undefined
|
|
2704
|
+
row[mapChildrenField] = undefined
|
|
2705
|
+
})
|
|
2706
|
+
if (prevDragNode) {
|
|
2707
|
+
if (prevDragPos === 'bottom') {
|
|
2708
|
+
insertRest = $xeTree.insertNextAt(dragList, prevDragNode)
|
|
2709
|
+
} else {
|
|
2710
|
+
insertRest = $xeTree.insertAt(dragList, prevDragNode)
|
|
2711
|
+
}
|
|
2712
|
+
} else {
|
|
2713
|
+
insertRest = $xeTree.insert(dragList)
|
|
2714
|
+
}
|
|
2715
|
+
$xeTree.dispatchEvent('node-insert-dragend', {
|
|
2716
|
+
oldNode,
|
|
2717
|
+
newNode: prevDragNode,
|
|
2718
|
+
dragNode,
|
|
2719
|
+
dragPos: prevDragPos as any,
|
|
2720
|
+
dragToChild: isDragToChildFlag,
|
|
2721
|
+
offsetIndex: dragOffsetIndex
|
|
2722
|
+
}, evnt)
|
|
2723
|
+
clearNodeDragData()
|
|
2724
|
+
|
|
2725
|
+
insertRest.then(() => {
|
|
2726
|
+
const { treeList } = reactData
|
|
2727
|
+
const { nodeMaps } = internalData
|
|
2728
|
+
const oldNodeid = getNodeId(dragNode)
|
|
2729
|
+
const oldNodeRest = nodeMaps[oldNodeid]
|
|
2730
|
+
let dragNodeHeight = 0
|
|
2731
|
+
let rsIndex = -1
|
|
2732
|
+
if (oldNodeRest) {
|
|
2733
|
+
if (animation) {
|
|
2734
|
+
const oldItemEl = el.querySelector<HTMLElement>(`.vxe-tree--node-wrapper[nodeid="${oldNodeid}"]`)
|
|
2735
|
+
const targetItemEl = oldItemEl
|
|
2736
|
+
if (targetItemEl) {
|
|
2737
|
+
dragNodeHeight = targetItemEl.offsetHeight
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2740
|
+
rsIndex = oldNodeRest.$index
|
|
2741
|
+
}
|
|
2742
|
+
const dragRangeList = rsIndex > -1 ? treeList.slice(rsIndex) : []
|
|
2743
|
+
if (animation && dragNodeHeight && dragRangeList.length) {
|
|
2744
|
+
const wrapperEl = el
|
|
2745
|
+
const dtClss: string[] = []
|
|
2746
|
+
dragRangeList.forEach(item => {
|
|
2747
|
+
const nodeid = getNodeId(item)
|
|
2748
|
+
dtClss.push(`.vxe-tree--node-wrapper[nodeid="${nodeid}"]`)
|
|
2749
|
+
})
|
|
2750
|
+
const dtTrList = wrapperEl.querySelectorAll<HTMLElement>(dtClss.join(','))
|
|
2751
|
+
moveRowAnimateToTb(dtTrList, -dragNodeHeight)
|
|
2752
|
+
}
|
|
2753
|
+
})
|
|
2754
|
+
})
|
|
2755
|
+
}
|
|
2756
|
+
}
|
|
2336
2757
|
},
|
|
2337
2758
|
hideCrossTreeNodeDropClearStatus () {
|
|
2338
2759
|
hideDropTip()
|
|
@@ -2663,10 +3084,17 @@ export default defineVxeComponent({
|
|
|
2663
3084
|
const loadingOpts = computeLoadingOpts.value
|
|
2664
3085
|
const isRowHover = computeIsRowHover.value
|
|
2665
3086
|
const treeStyle = computeTreeStyle.value
|
|
3087
|
+
const dragOpts = computeDragOpts.value
|
|
2666
3088
|
const loadingSlot = slots.loading
|
|
2667
3089
|
const headerSlot = slots.header
|
|
2668
3090
|
const footerSlot = slots.footer
|
|
2669
3091
|
|
|
3092
|
+
const teOns: {
|
|
3093
|
+
onDragover?: (...args: any[]) => void
|
|
3094
|
+
} = { }
|
|
3095
|
+
if (dragOpts.isCrossTreeDrag && !treeList.length) {
|
|
3096
|
+
teOns.onDragover = $xeTree.handleCrossTreeNodeDragInsertEvent
|
|
3097
|
+
}
|
|
2670
3098
|
return h('div', {
|
|
2671
3099
|
ref: refElem,
|
|
2672
3100
|
class: ['vxe-tree', {
|
|
@@ -2677,7 +3105,8 @@ export default defineVxeComponent({
|
|
|
2677
3105
|
'node--hover': isRowHover,
|
|
2678
3106
|
'node--trigger': trigger === 'node',
|
|
2679
3107
|
'is--loading': loading
|
|
2680
|
-
}]
|
|
3108
|
+
}],
|
|
3109
|
+
...teOns
|
|
2681
3110
|
}, [
|
|
2682
3111
|
headerSlot
|
|
2683
3112
|
? h('div', {
|
|
@@ -2790,8 +3219,8 @@ export default defineVxeComponent({
|
|
|
2790
3219
|
if (drag && !transform) {
|
|
2791
3220
|
errLog('vxe.error.notSupportProp', ['drag', 'transform=false', 'transform=true'])
|
|
2792
3221
|
}
|
|
2793
|
-
if (dragOpts.isCrossTreeDrag) {
|
|
2794
|
-
errLog('vxe.error.
|
|
3222
|
+
if (dragOpts.isCrossTreeDrag && !dragOpts.isCrossDrag) {
|
|
3223
|
+
errLog('vxe.error.reqSupportProp', ['drag-config.isCrossTreeDrag', 'drag-config.isCrossDrag'])
|
|
2795
3224
|
}
|
|
2796
3225
|
// if (valueField) {
|
|
2797
3226
|
// errLog('vxe.error.delProp', ['value-field', 'value-field'])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VxeTreeConstructor } from '../../../types'
|
|
1
|
+
import type { VxeTreeConstructor, VxeTreeDefines } from '../../../types'
|
|
2
2
|
|
|
3
3
|
function countTreeExpand ($xeTree: VxeTreeConstructor, prevNode: any) {
|
|
4
4
|
let count = 1
|
|
@@ -33,3 +33,19 @@ export function calcTreeLine ($xeTree: VxeTreeConstructor, node: any, prevNode:
|
|
|
33
33
|
}
|
|
34
34
|
return (rowHeight || 28) * expandSize - (prevNode ? 1 : 12)
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
export function getItemCacheObj (item: any): VxeTreeDefines.NodeCacheItem {
|
|
38
|
+
return {
|
|
39
|
+
item,
|
|
40
|
+
index: -1,
|
|
41
|
+
$index: -1,
|
|
42
|
+
_index: -1,
|
|
43
|
+
items: [],
|
|
44
|
+
parent: null,
|
|
45
|
+
nodes: [],
|
|
46
|
+
level: 0,
|
|
47
|
+
treeIndex: -1,
|
|
48
|
+
lineCount: 0,
|
|
49
|
+
treeLoaded: false
|
|
50
|
+
}
|
|
51
|
+
}
|
package/packages/ui/index.ts
CHANGED
|
@@ -185,7 +185,10 @@ setConfig({
|
|
|
185
185
|
formView: {},
|
|
186
186
|
icon: {},
|
|
187
187
|
iconPicker: {
|
|
188
|
-
icons: ['home', 'company', 'comment', 'setting', 'send', 'envelope', 'envelope-open', 'bell', 'search', 'print', 'pc', 'goods', 'chart-line', 'edit', 'delete', 'save', 'folder', 'microphone', 'flag', 'link', 'location', 'sunny', 'rmb', 'usd', 'user', 'add-user', 'add-users', 'star', 'unlock', 'time', 'text', 'feedback', 'calendar', 'association-form', 'cloud-download', 'cloud-upload', 'file', 'subtable', 'chart-bar-x', 'chart-bar-y', 'chart-line', 'chart-pie', 'chart-radar']
|
|
188
|
+
icons: ['home', 'company', 'comment', 'setting', 'send', 'envelope', 'envelope-open', 'bell', 'search', 'print', 'pc', 'goods', 'chart-line', 'edit', 'delete', 'save', 'folder', 'microphone', 'flag', 'link', 'location', 'sunny', 'rmb', 'usd', 'user', 'add-user', 'add-users', 'star', 'unlock', 'time', 'text', 'feedback', 'calendar', 'association-form', 'cloud-download', 'cloud-upload', 'file', 'subtable', 'chart-bar-x', 'chart-bar-y', 'chart-line', 'chart-pie', 'chart-radar'],
|
|
189
|
+
popupConfig: {
|
|
190
|
+
// chunkSize: 4
|
|
191
|
+
}
|
|
189
192
|
},
|
|
190
193
|
image: {
|
|
191
194
|
draggable: null,
|