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
package/es/tree/src/tree.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, h, reactive, computed, 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';
|
|
@@ -10,7 +10,7 @@ import { toCssUnit, isScale, getPaddingTopBottomSize, addClass, removeClass, get
|
|
|
10
10
|
import { isEnableConf, enModelValue, deModelValue } from '../../ui/src/utils';
|
|
11
11
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
|
|
12
12
|
import VxeLoadingComponent from '../../loading';
|
|
13
|
-
const { errLog } = createComponentLog('tree');
|
|
13
|
+
const { warnLog, errLog } = createComponentLog('tree');
|
|
14
14
|
const { menus, getConfig, getI18n, getIcon } = VxeUI;
|
|
15
15
|
/**
|
|
16
16
|
* 生成节点的唯一主键
|
|
@@ -39,6 +39,8 @@ function createInternalData() {
|
|
|
39
39
|
offsetSize: 0,
|
|
40
40
|
rowHeight: 0
|
|
41
41
|
},
|
|
42
|
+
removeRowMaps: {},
|
|
43
|
+
insertRowMaps: {},
|
|
42
44
|
// prevDragNode: null,
|
|
43
45
|
// prevDragToChild: false,
|
|
44
46
|
// prevDragPos: ''
|
|
@@ -60,14 +62,13 @@ function createReactData() {
|
|
|
60
62
|
treeList: [],
|
|
61
63
|
updateExpandedFlag: 1,
|
|
62
64
|
updateCheckboxFlag: 1,
|
|
65
|
+
insertRowFlag: 1,
|
|
66
|
+
removeRowFlag: 1,
|
|
63
67
|
dragNode: null,
|
|
64
68
|
dragTipText: ''
|
|
65
69
|
};
|
|
66
70
|
}
|
|
67
|
-
|
|
68
|
-
// $oldTree: VxeTreeConstructor & VxeTreePrivateMethods
|
|
69
|
-
// $newTree: (VxeTreeConstructor & VxeTreePrivateMethods) | null
|
|
70
|
-
// } | null = null
|
|
71
|
+
let crossTreeDragNodeObj = null;
|
|
71
72
|
export default defineVxeComponent({
|
|
72
73
|
name: 'VxeTree',
|
|
73
74
|
props: {
|
|
@@ -204,6 +205,8 @@ export default defineVxeComponent({
|
|
|
204
205
|
'node-dragstart',
|
|
205
206
|
'node-dragover',
|
|
206
207
|
'node-dragend',
|
|
208
|
+
'node-remove-dragend',
|
|
209
|
+
'node-insert-dragend',
|
|
207
210
|
'node-expand',
|
|
208
211
|
'node-menu',
|
|
209
212
|
'menu-click'
|
|
@@ -1331,6 +1334,149 @@ export default defineVxeComponent({
|
|
|
1331
1334
|
}
|
|
1332
1335
|
recalculate();
|
|
1333
1336
|
};
|
|
1337
|
+
const insertTreeNode = (newRecords, isAppend) => {
|
|
1338
|
+
const { treeFullData, nodeMaps } = internalData;
|
|
1339
|
+
const keyField = computeKeyField.value;
|
|
1340
|
+
const parentField = computeParentField.value;
|
|
1341
|
+
const childrenField = computeChildrenField.value;
|
|
1342
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
1343
|
+
const funcName = isAppend ? 'push' : 'unshift';
|
|
1344
|
+
newRecords.forEach((item) => {
|
|
1345
|
+
const parentRowId = item[parentField];
|
|
1346
|
+
const nodeid = getNodeId(item);
|
|
1347
|
+
const matchObj = parentRowId ? XEUtils.findTree(treeFullData, (item) => parentRowId === item[keyField], { children: mapChildrenField }) : null;
|
|
1348
|
+
const itemRest = getItemCacheObj(item);
|
|
1349
|
+
if (matchObj) {
|
|
1350
|
+
const { item: parentItem } = matchObj;
|
|
1351
|
+
const parentRest = nodeMaps[getNodeId(parentItem)];
|
|
1352
|
+
const parentLevel = parentRest ? parentRest.level : 0;
|
|
1353
|
+
let pChilds = parentItem[childrenField];
|
|
1354
|
+
let pMapChilds = parentItem[mapChildrenField];
|
|
1355
|
+
if (!XEUtils.isArray(pChilds)) {
|
|
1356
|
+
pChilds = parentItem[childrenField] = [];
|
|
1357
|
+
}
|
|
1358
|
+
if (!XEUtils.isArray(pMapChilds)) {
|
|
1359
|
+
pMapChilds = parentItem[mapChildrenField] = [];
|
|
1360
|
+
}
|
|
1361
|
+
itemRest.parent = parentItem;
|
|
1362
|
+
itemRest.items = pChilds;
|
|
1363
|
+
itemRest.level = parentLevel;
|
|
1364
|
+
pChilds[funcName](item);
|
|
1365
|
+
pMapChilds[funcName](item);
|
|
1366
|
+
}
|
|
1367
|
+
else {
|
|
1368
|
+
if (parentRowId) {
|
|
1369
|
+
warnLog('vxe.error.unableInsert');
|
|
1370
|
+
}
|
|
1371
|
+
treeFullData[funcName](item);
|
|
1372
|
+
}
|
|
1373
|
+
nodeMaps[nodeid] = itemRest;
|
|
1374
|
+
});
|
|
1375
|
+
};
|
|
1376
|
+
const handleInsertNodeAt = (records, targetNodeOrNodeid, isInsertNextNode) => {
|
|
1377
|
+
const { transform } = props;
|
|
1378
|
+
const { treeFullData, nodeMaps } = internalData;
|
|
1379
|
+
const keyField = computeKeyField.value;
|
|
1380
|
+
const parentField = computeParentField.value;
|
|
1381
|
+
const childrenField = computeChildrenField.value;
|
|
1382
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
1383
|
+
if (!transform) {
|
|
1384
|
+
errLog('vxe.error.reqSupportProp', ['insert() | insertAt() | insertNextAt()', 'transform']);
|
|
1385
|
+
return Promise.resolve({ node: null, nodes: [] });
|
|
1386
|
+
}
|
|
1387
|
+
if (!XEUtils.isArray(records)) {
|
|
1388
|
+
records = [records];
|
|
1389
|
+
}
|
|
1390
|
+
let targetNode = targetNodeOrNodeid;
|
|
1391
|
+
if (XEUtils.isString(targetNodeOrNodeid) || XEUtils.isNumber(targetNodeOrNodeid)) {
|
|
1392
|
+
const nodeRest = nodeMaps[targetNodeOrNodeid];
|
|
1393
|
+
if (nodeRest) {
|
|
1394
|
+
targetNode = nodeRest.item;
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
if (!records.length) {
|
|
1398
|
+
return Promise.resolve({ node: null, nodes: [] });
|
|
1399
|
+
}
|
|
1400
|
+
const newRecords = records.map(record => XEUtils.assign({ [mapChildrenField]: [], [childrenField]: [] }, record));
|
|
1401
|
+
const treeRecords = XEUtils.toArrayTree(newRecords, { key: keyField, parentKey: parentField, children: childrenField });
|
|
1402
|
+
if (XEUtils.eqNull(targetNode)) {
|
|
1403
|
+
insertTreeNode(newRecords, false);
|
|
1404
|
+
}
|
|
1405
|
+
else {
|
|
1406
|
+
if (targetNode === -1) {
|
|
1407
|
+
insertTreeNode(newRecords, true);
|
|
1408
|
+
}
|
|
1409
|
+
else {
|
|
1410
|
+
const matchMapObj = XEUtils.findTree(treeFullData, item => targetNode[keyField] === item[keyField], { children: mapChildrenField });
|
|
1411
|
+
if (matchMapObj) {
|
|
1412
|
+
const { parent: parentNode } = matchMapObj;
|
|
1413
|
+
const parentMapChilds = parentNode ? parentNode[mapChildrenField] : treeFullData;
|
|
1414
|
+
const parentRest = nodeMaps[getNodeId(parentNode)];
|
|
1415
|
+
const parentLevel = parentRest ? parentRest.level : 0;
|
|
1416
|
+
treeRecords.forEach((row, i) => {
|
|
1417
|
+
if (parentNode) {
|
|
1418
|
+
if (row[parentField] !== parentNode[keyField]) {
|
|
1419
|
+
errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, `${parentField}=${parentNode[keyField]}`]);
|
|
1420
|
+
row[parentField] = parentNode[keyField];
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
else {
|
|
1424
|
+
if (row[parentField] !== null) {
|
|
1425
|
+
if (!XEUtils.eqNull(row[parentField])) {
|
|
1426
|
+
errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, 'null']);
|
|
1427
|
+
}
|
|
1428
|
+
row[parentField] = null;
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
let targetIndex = matchMapObj.index + i;
|
|
1432
|
+
if (isInsertNextNode) {
|
|
1433
|
+
targetIndex = targetIndex + 1;
|
|
1434
|
+
}
|
|
1435
|
+
parentMapChilds.splice(targetIndex, 0, row);
|
|
1436
|
+
});
|
|
1437
|
+
XEUtils.eachTree(treeRecords, (item) => {
|
|
1438
|
+
const nodeid = getNodeId(item);
|
|
1439
|
+
const nodeRest = getItemCacheObj(item);
|
|
1440
|
+
nodeRest.level = parentLevel;
|
|
1441
|
+
if (item[childrenField]) {
|
|
1442
|
+
item[mapChildrenField] = item[childrenField];
|
|
1443
|
+
}
|
|
1444
|
+
nodeMaps[nodeid] = nodeRest;
|
|
1445
|
+
}, { children: childrenField });
|
|
1446
|
+
// 源
|
|
1447
|
+
if (parentNode) {
|
|
1448
|
+
const matchObj = XEUtils.findTree(treeFullData, item => targetNode[keyField] === item[keyField], { children: childrenField });
|
|
1449
|
+
if (matchObj) {
|
|
1450
|
+
const parentChilds = matchObj.items;
|
|
1451
|
+
let targetIndex = matchObj.index;
|
|
1452
|
+
if (isInsertNextNode) {
|
|
1453
|
+
targetIndex = targetIndex + 1;
|
|
1454
|
+
}
|
|
1455
|
+
parentChilds.splice(targetIndex, 0, ...treeRecords);
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
else {
|
|
1460
|
+
warnLog('vxe.error.unableInsert');
|
|
1461
|
+
insertTreeNode(newRecords, true);
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
reactData.insertRowFlag++;
|
|
1466
|
+
cacheNodeMap();
|
|
1467
|
+
handleData(true);
|
|
1468
|
+
updateAfterDataIndex();
|
|
1469
|
+
updateCheckboxStatus();
|
|
1470
|
+
if (reactData.scrollYLoad) {
|
|
1471
|
+
updateYSpace();
|
|
1472
|
+
}
|
|
1473
|
+
return nextTick().then(() => {
|
|
1474
|
+
return {
|
|
1475
|
+
node: newRecords.length ? newRecords[newRecords.length - 1] : null,
|
|
1476
|
+
nodes: newRecords
|
|
1477
|
+
};
|
|
1478
|
+
});
|
|
1479
|
+
};
|
|
1334
1480
|
const treeMethods = {
|
|
1335
1481
|
dispatchEvent,
|
|
1336
1482
|
getNodeId,
|
|
@@ -1734,7 +1880,91 @@ export default defineVxeComponent({
|
|
|
1734
1880
|
}
|
|
1735
1881
|
return recalculate();
|
|
1736
1882
|
},
|
|
1737
|
-
clearScroll
|
|
1883
|
+
clearScroll,
|
|
1884
|
+
insert(records) {
|
|
1885
|
+
return handleInsertNodeAt(records, null);
|
|
1886
|
+
},
|
|
1887
|
+
insertAt(records, targetNodeOrNodeid) {
|
|
1888
|
+
return handleInsertNodeAt(records, targetNodeOrNodeid);
|
|
1889
|
+
},
|
|
1890
|
+
insertNextAt(records, targetNodeOrNodeid) {
|
|
1891
|
+
return handleInsertNodeAt(records, targetNodeOrNodeid, true);
|
|
1892
|
+
},
|
|
1893
|
+
remove(nodes) {
|
|
1894
|
+
const { transform } = props;
|
|
1895
|
+
const { treeFullData } = internalData;
|
|
1896
|
+
const childrenField = computeChildrenField.value;
|
|
1897
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
1898
|
+
if (!transform) {
|
|
1899
|
+
errLog('vxe.error.reqSupportProp', ['remove()', 'transform']);
|
|
1900
|
+
return Promise.resolve({ node: null, nodes: [] });
|
|
1901
|
+
}
|
|
1902
|
+
let delList = [];
|
|
1903
|
+
if (!nodes) {
|
|
1904
|
+
nodes = treeFullData;
|
|
1905
|
+
}
|
|
1906
|
+
else if (!XEUtils.isArray(nodes)) {
|
|
1907
|
+
nodes = [nodes];
|
|
1908
|
+
}
|
|
1909
|
+
if (!nodes.length) {
|
|
1910
|
+
return Promise.resolve({ node: null, nodes: [] });
|
|
1911
|
+
}
|
|
1912
|
+
// 从数据源中移除
|
|
1913
|
+
if (treeFullData === nodes) {
|
|
1914
|
+
nodes = delList = treeFullData.slice(0);
|
|
1915
|
+
internalData.treeFullData = [];
|
|
1916
|
+
}
|
|
1917
|
+
else {
|
|
1918
|
+
nodes.forEach((item) => {
|
|
1919
|
+
const nodeid = getNodeId(item);
|
|
1920
|
+
const matchMapObj = XEUtils.findTree(treeFullData, item => nodeid === getNodeId(item), { children: mapChildrenField });
|
|
1921
|
+
if (matchMapObj) {
|
|
1922
|
+
const rItems = matchMapObj.items.splice(matchMapObj.index, 1);
|
|
1923
|
+
delList.push(rItems[0]);
|
|
1924
|
+
}
|
|
1925
|
+
const matchObj = XEUtils.findTree(treeFullData, item => nodeid === getNodeId(item), { children: childrenField });
|
|
1926
|
+
if (matchObj) {
|
|
1927
|
+
const rItems = matchObj.items.splice(matchObj.index, 1);
|
|
1928
|
+
delList.push(rItems[0]);
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1932
|
+
reactData.removeRowFlag++;
|
|
1933
|
+
reactData.insertRowFlag++;
|
|
1934
|
+
cacheNodeMap();
|
|
1935
|
+
handleData(true);
|
|
1936
|
+
updateAfterDataIndex();
|
|
1937
|
+
updateCheckboxStatus();
|
|
1938
|
+
if (reactData.scrollYLoad) {
|
|
1939
|
+
updateYSpace();
|
|
1940
|
+
}
|
|
1941
|
+
return nextTick().then(() => {
|
|
1942
|
+
return recalculate();
|
|
1943
|
+
}).then(() => {
|
|
1944
|
+
return { node: delList.length ? delList[delList.length - 1] : null, nodes: delList };
|
|
1945
|
+
});
|
|
1946
|
+
},
|
|
1947
|
+
getInsertRecords() {
|
|
1948
|
+
const { insertRowMaps } = internalData;
|
|
1949
|
+
const insertRecords = [];
|
|
1950
|
+
XEUtils.each(insertRowMaps, (row) => {
|
|
1951
|
+
insertRecords.push(row);
|
|
1952
|
+
});
|
|
1953
|
+
return insertRecords;
|
|
1954
|
+
},
|
|
1955
|
+
getRemoveRecords() {
|
|
1956
|
+
const { removeRowMaps } = internalData;
|
|
1957
|
+
const removeRecords = [];
|
|
1958
|
+
XEUtils.each(removeRowMaps, (row) => {
|
|
1959
|
+
removeRecords.push(row);
|
|
1960
|
+
});
|
|
1961
|
+
return removeRecords;
|
|
1962
|
+
}
|
|
1963
|
+
};
|
|
1964
|
+
const handleNodeDragEndClearStatus = () => {
|
|
1965
|
+
clearNodeDragData();
|
|
1966
|
+
clearCrossTreeDragStatus();
|
|
1967
|
+
recalculate();
|
|
1738
1968
|
};
|
|
1739
1969
|
const clearNodeDropOrigin = () => {
|
|
1740
1970
|
const el = refElem.value;
|
|
@@ -1785,7 +2015,7 @@ export default defineVxeComponent({
|
|
|
1785
2015
|
}
|
|
1786
2016
|
};
|
|
1787
2017
|
const clearCrossTreeDragStatus = () => {
|
|
1788
|
-
|
|
2018
|
+
crossTreeDragNodeObj = null;
|
|
1789
2019
|
crossTreeDragNodeInfo.node = null;
|
|
1790
2020
|
};
|
|
1791
2021
|
const clearDragStatus = () => {
|
|
@@ -2150,6 +2380,18 @@ export default defineVxeComponent({
|
|
|
2150
2380
|
const { dragNode } = reactData;
|
|
2151
2381
|
const { nodeMaps, prevDragNode, prevDragPos, prevDragToChild } = internalData;
|
|
2152
2382
|
const hasChildField = computeHasChildField.value;
|
|
2383
|
+
const dragConfig = computeDragOpts.value;
|
|
2384
|
+
const { isCrossDrag, isCrossTreeDrag } = dragConfig;
|
|
2385
|
+
// 跨树拖拽
|
|
2386
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj) {
|
|
2387
|
+
const { $newTree } = crossTreeDragNodeObj;
|
|
2388
|
+
if ($newTree && $newTree.xID !== $xeTree.xID) {
|
|
2389
|
+
if (isCrossDrag) {
|
|
2390
|
+
$newTree.handleCrossTreeNodeDragInsertEvent(evnt);
|
|
2391
|
+
}
|
|
2392
|
+
return;
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2153
2395
|
if (lazy && prevDragToChild) {
|
|
2154
2396
|
// 懒加载
|
|
2155
2397
|
const newNodeid = getNodeId(prevDragNode);
|
|
@@ -2229,17 +2471,196 @@ export default defineVxeComponent({
|
|
|
2229
2471
|
/**
|
|
2230
2472
|
* 处理跨树拖拽完成
|
|
2231
2473
|
*/
|
|
2232
|
-
handleCrossTreeNodeDragFinishEvent() {
|
|
2474
|
+
handleCrossTreeNodeDragFinishEvent(evnt) {
|
|
2475
|
+
const { treeList } = reactData;
|
|
2476
|
+
const { nodeMaps } = internalData;
|
|
2477
|
+
const dragOpts = computeDragOpts.value;
|
|
2478
|
+
const { animation, isCrossTreeDrag } = dragOpts;
|
|
2479
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
2480
|
+
const el = refElem.value;
|
|
2481
|
+
if (!el) {
|
|
2482
|
+
return;
|
|
2483
|
+
}
|
|
2484
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && crossTreeDragNodeInfo) {
|
|
2485
|
+
const { node: dragNode } = crossTreeDragNodeInfo;
|
|
2486
|
+
if (dragNode) {
|
|
2487
|
+
const dragNodeid = getNodeId(dragNode);
|
|
2488
|
+
const dragNodeRest = nodeMaps[dragNodeid];
|
|
2489
|
+
let dragNodeHeight = 0;
|
|
2490
|
+
let rsIndex = -1;
|
|
2491
|
+
if (dragNodeRest) {
|
|
2492
|
+
if (animation) {
|
|
2493
|
+
const oldItemEl = el.querySelector(`.vxe-tree--node-wrapper[nodeid="${dragNodeid}"]`);
|
|
2494
|
+
const targetItemEl = oldItemEl;
|
|
2495
|
+
if (targetItemEl) {
|
|
2496
|
+
dragNodeHeight = targetItemEl.offsetHeight;
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2499
|
+
rsIndex = dragNodeRest.$index;
|
|
2500
|
+
}
|
|
2501
|
+
const dragRangeList = rsIndex > -1 && rsIndex < treeList.length - 1 ? treeList.slice(rsIndex + 1) : [];
|
|
2502
|
+
const dragList = XEUtils.toTreeArray([dragNode], {
|
|
2503
|
+
updated: true,
|
|
2504
|
+
children: mapChildrenField
|
|
2505
|
+
});
|
|
2506
|
+
$xeTree.remove(dragList).then(() => {
|
|
2507
|
+
if (animation && dragNodeHeight && dragRangeList.length) {
|
|
2508
|
+
const wrapperEl = el;
|
|
2509
|
+
const dtClss = [];
|
|
2510
|
+
dragRangeList.forEach(item => {
|
|
2511
|
+
const nodeid = getNodeId(item);
|
|
2512
|
+
dtClss.push(`.vxe-tree--node-wrapper[nodeid="${nodeid}"]`);
|
|
2513
|
+
});
|
|
2514
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
2515
|
+
moveRowAnimateToTb(dtTrList, dragNodeHeight);
|
|
2516
|
+
}
|
|
2517
|
+
});
|
|
2518
|
+
dispatchEvent('node-remove-dragend', {
|
|
2519
|
+
node: dragNode
|
|
2520
|
+
}, evnt);
|
|
2521
|
+
handleNodeDragEndClearStatus();
|
|
2522
|
+
}
|
|
2523
|
+
}
|
|
2233
2524
|
},
|
|
2234
2525
|
/**
|
|
2235
2526
|
* 处理跨树拖至新的空树
|
|
2236
2527
|
*/
|
|
2237
|
-
|
|
2528
|
+
handleCrossTreeNodeDragoverEmptyEvent(evnt) {
|
|
2529
|
+
const { treeList } = reactData;
|
|
2530
|
+
const dragOpts = computeDragOpts.value;
|
|
2531
|
+
const { isCrossTreeDrag } = dragOpts;
|
|
2532
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && !treeList.length) {
|
|
2533
|
+
const { $oldTree, $newTree } = crossTreeDragNodeObj;
|
|
2534
|
+
if ($oldTree) {
|
|
2535
|
+
const oldTreeReactData = $oldTree;
|
|
2536
|
+
if ($oldTree.xID !== $xeTree.xID) {
|
|
2537
|
+
if ($newTree && $newTree.xID !== $xeTree.xID) {
|
|
2538
|
+
$newTree.hideCrossTreeNodeDropClearStatus();
|
|
2539
|
+
}
|
|
2540
|
+
evnt.preventDefault();
|
|
2541
|
+
$oldTree.hideCrossTreeNodeDropClearStatus();
|
|
2542
|
+
crossTreeDragNodeObj.$newTree = $xeTree;
|
|
2543
|
+
internalData.prevDragNode = null;
|
|
2544
|
+
reactData.dragTipText = oldTreeReactData.dragTipText;
|
|
2545
|
+
showDropTip(evnt, evnt.currentTarget, true, '');
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
}
|
|
2238
2549
|
},
|
|
2239
2550
|
/**
|
|
2240
2551
|
* 处理跨树拖插入
|
|
2241
2552
|
*/
|
|
2242
|
-
|
|
2553
|
+
handleCrossTreeNodeDragInsertEvent(evnt) {
|
|
2554
|
+
const { prevDragNode, prevDragPos, prevDragToChild } = internalData;
|
|
2555
|
+
const dragOpts = computeDragOpts.value;
|
|
2556
|
+
const { animation, isSelfToChildDrag, isCrossTreeDrag, dragEndMethod, dragToChildMethod } = dragOpts;
|
|
2557
|
+
const parentField = computeParentField.value;
|
|
2558
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
2559
|
+
const childrenField = computeChildrenField.value;
|
|
2560
|
+
// 跨表拖拽
|
|
2561
|
+
if (isCrossTreeDrag && crossTreeDragNodeObj && crossTreeDragNodeInfo) {
|
|
2562
|
+
const { node: oldNode } = crossTreeDragNodeInfo;
|
|
2563
|
+
const { $oldTree } = crossTreeDragNodeObj;
|
|
2564
|
+
const el = refElem.value;
|
|
2565
|
+
if (!el) {
|
|
2566
|
+
return;
|
|
2567
|
+
}
|
|
2568
|
+
if ($oldTree && oldNode) {
|
|
2569
|
+
const dragNode = oldNode;
|
|
2570
|
+
let dragOffsetIndex = -1;
|
|
2571
|
+
if (prevDragNode) {
|
|
2572
|
+
dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
2573
|
+
}
|
|
2574
|
+
const dragParams = {
|
|
2575
|
+
oldNode: dragNode,
|
|
2576
|
+
newNode: prevDragNode,
|
|
2577
|
+
dragNode,
|
|
2578
|
+
dragPos: prevDragPos,
|
|
2579
|
+
dragToChild: !!prevDragToChild,
|
|
2580
|
+
offsetIndex: dragOffsetIndex
|
|
2581
|
+
};
|
|
2582
|
+
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
2583
|
+
const errRest = {
|
|
2584
|
+
status: false
|
|
2585
|
+
};
|
|
2586
|
+
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
2587
|
+
if (!status) {
|
|
2588
|
+
if ($oldTree) {
|
|
2589
|
+
if ($oldTree.xID !== $xeTree.xID) {
|
|
2590
|
+
$oldTree.handleCrossTreeNodeDragCancelEvent(evnt);
|
|
2591
|
+
}
|
|
2592
|
+
}
|
|
2593
|
+
handleNodeDragEndClearStatus();
|
|
2594
|
+
return errRest;
|
|
2595
|
+
}
|
|
2596
|
+
let insertRest = Promise.resolve();
|
|
2597
|
+
const dragList = XEUtils.toTreeArray([dragNode], {
|
|
2598
|
+
updated: true,
|
|
2599
|
+
children: mapChildrenField
|
|
2600
|
+
});
|
|
2601
|
+
$oldTree.handleCrossTreeNodeDragFinishEvent(evnt);
|
|
2602
|
+
if (prevDragNode) {
|
|
2603
|
+
dragNode[parentField] = prevDragNode[parentField];
|
|
2604
|
+
}
|
|
2605
|
+
else {
|
|
2606
|
+
dragNode[parentField] = null;
|
|
2607
|
+
}
|
|
2608
|
+
dragList.forEach(row => {
|
|
2609
|
+
row[childrenField] = undefined;
|
|
2610
|
+
row[mapChildrenField] = undefined;
|
|
2611
|
+
});
|
|
2612
|
+
if (prevDragNode) {
|
|
2613
|
+
if (prevDragPos === 'bottom') {
|
|
2614
|
+
insertRest = $xeTree.insertNextAt(dragList, prevDragNode);
|
|
2615
|
+
}
|
|
2616
|
+
else {
|
|
2617
|
+
insertRest = $xeTree.insertAt(dragList, prevDragNode);
|
|
2618
|
+
}
|
|
2619
|
+
}
|
|
2620
|
+
else {
|
|
2621
|
+
insertRest = $xeTree.insert(dragList);
|
|
2622
|
+
}
|
|
2623
|
+
$xeTree.dispatchEvent('node-insert-dragend', {
|
|
2624
|
+
oldNode,
|
|
2625
|
+
newNode: prevDragNode,
|
|
2626
|
+
dragNode,
|
|
2627
|
+
dragPos: prevDragPos,
|
|
2628
|
+
dragToChild: isDragToChildFlag,
|
|
2629
|
+
offsetIndex: dragOffsetIndex
|
|
2630
|
+
}, evnt);
|
|
2631
|
+
clearNodeDragData();
|
|
2632
|
+
insertRest.then(() => {
|
|
2633
|
+
const { treeList } = reactData;
|
|
2634
|
+
const { nodeMaps } = internalData;
|
|
2635
|
+
const oldNodeid = getNodeId(dragNode);
|
|
2636
|
+
const oldNodeRest = nodeMaps[oldNodeid];
|
|
2637
|
+
let dragNodeHeight = 0;
|
|
2638
|
+
let rsIndex = -1;
|
|
2639
|
+
if (oldNodeRest) {
|
|
2640
|
+
if (animation) {
|
|
2641
|
+
const oldItemEl = el.querySelector(`.vxe-tree--node-wrapper[nodeid="${oldNodeid}"]`);
|
|
2642
|
+
const targetItemEl = oldItemEl;
|
|
2643
|
+
if (targetItemEl) {
|
|
2644
|
+
dragNodeHeight = targetItemEl.offsetHeight;
|
|
2645
|
+
}
|
|
2646
|
+
}
|
|
2647
|
+
rsIndex = oldNodeRest.$index;
|
|
2648
|
+
}
|
|
2649
|
+
const dragRangeList = rsIndex > -1 ? treeList.slice(rsIndex) : [];
|
|
2650
|
+
if (animation && dragNodeHeight && dragRangeList.length) {
|
|
2651
|
+
const wrapperEl = el;
|
|
2652
|
+
const dtClss = [];
|
|
2653
|
+
dragRangeList.forEach(item => {
|
|
2654
|
+
const nodeid = getNodeId(item);
|
|
2655
|
+
dtClss.push(`.vxe-tree--node-wrapper[nodeid="${nodeid}"]`);
|
|
2656
|
+
});
|
|
2657
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
2658
|
+
moveRowAnimateToTb(dtTrList, -dragNodeHeight);
|
|
2659
|
+
}
|
|
2660
|
+
});
|
|
2661
|
+
});
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2243
2664
|
},
|
|
2244
2665
|
hideCrossTreeNodeDropClearStatus() {
|
|
2245
2666
|
hideDropTip();
|
|
@@ -2537,12 +2958,15 @@ export default defineVxeComponent({
|
|
|
2537
2958
|
const loadingOpts = computeLoadingOpts.value;
|
|
2538
2959
|
const isRowHover = computeIsRowHover.value;
|
|
2539
2960
|
const treeStyle = computeTreeStyle.value;
|
|
2961
|
+
const dragOpts = computeDragOpts.value;
|
|
2540
2962
|
const loadingSlot = slots.loading;
|
|
2541
2963
|
const headerSlot = slots.header;
|
|
2542
2964
|
const footerSlot = slots.footer;
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2965
|
+
const teOns = {};
|
|
2966
|
+
if (dragOpts.isCrossTreeDrag && !treeList.length) {
|
|
2967
|
+
teOns.onDragover = $xeTree.handleCrossTreeNodeDragInsertEvent;
|
|
2968
|
+
}
|
|
2969
|
+
return h('div', Object.assign({ ref: refElem, class: ['vxe-tree', {
|
|
2546
2970
|
[`size--${vSize}`]: vSize,
|
|
2547
2971
|
'show--line': showLine,
|
|
2548
2972
|
'checkbox--highlight': checkboxOpts.highlight,
|
|
@@ -2550,8 +2974,7 @@ export default defineVxeComponent({
|
|
|
2550
2974
|
'node--hover': isRowHover,
|
|
2551
2975
|
'node--trigger': trigger === 'node',
|
|
2552
2976
|
'is--loading': loading
|
|
2553
|
-
}]
|
|
2554
|
-
}, [
|
|
2977
|
+
}] }, teOns), [
|
|
2555
2978
|
headerSlot
|
|
2556
2979
|
? h('div', {
|
|
2557
2980
|
ref: refHeaderWrapperElem,
|
|
@@ -2657,8 +3080,8 @@ export default defineVxeComponent({
|
|
|
2657
3080
|
if (drag && !transform) {
|
|
2658
3081
|
errLog('vxe.error.notSupportProp', ['drag', 'transform=false', 'transform=true']);
|
|
2659
3082
|
}
|
|
2660
|
-
if (dragOpts.isCrossTreeDrag) {
|
|
2661
|
-
errLog('vxe.error.
|
|
3083
|
+
if (dragOpts.isCrossTreeDrag && !dragOpts.isCrossDrag) {
|
|
3084
|
+
errLog('vxe.error.reqSupportProp', ['drag-config.isCrossTreeDrag', 'drag-config.isCrossDrag']);
|
|
2662
3085
|
}
|
|
2663
3086
|
// if (valueField) {
|
|
2664
3087
|
// errLog('vxe.error.delProp', ['value-field', 'value-field'])
|
package/es/tree/src/util.js
CHANGED
|
@@ -30,3 +30,18 @@ export function calcTreeLine($xeTree, node, prevNode) {
|
|
|
30
30
|
}
|
|
31
31
|
return (rowHeight || 28) * expandSize - (prevNode ? 1 : 12);
|
|
32
32
|
}
|
|
33
|
+
export function getItemCacheObj(item) {
|
|
34
|
+
return {
|
|
35
|
+
item,
|
|
36
|
+
index: -1,
|
|
37
|
+
$index: -1,
|
|
38
|
+
_index: -1,
|
|
39
|
+
items: [],
|
|
40
|
+
parent: null,
|
|
41
|
+
nodes: [],
|
|
42
|
+
level: 0,
|
|
43
|
+
treeIndex: -1,
|
|
44
|
+
lineCount: 0,
|
|
45
|
+
treeLoaded: false
|
|
46
|
+
};
|
|
47
|
+
}
|
package/es/tree/style.css
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
@charset "UTF-8";
|
|
2
|
+
.vxe-tree {
|
|
3
|
+
--vxe-ui-tree-current-font-size: var(--vxe-ui-font-size-default);
|
|
4
|
+
}
|
|
5
|
+
.vxe-tree.size--medium {
|
|
6
|
+
--vxe-ui-tree-current-font-size: var(--vxe-ui-font-size-medium);
|
|
7
|
+
}
|
|
8
|
+
.vxe-tree.size--small {
|
|
9
|
+
--vxe-ui-tree-current-font-size: var(--vxe-ui-font-size-small);
|
|
10
|
+
}
|
|
11
|
+
.vxe-tree.size--mini {
|
|
12
|
+
--vxe-ui-tree-current-font-size: var(--vxe-ui-font-size-mini);
|
|
13
|
+
}
|
|
14
|
+
|
|
2
15
|
.vxe-tree {
|
|
3
16
|
position: relative;
|
|
17
|
+
font-size: var(--vxe-ui-tree-current-font-size);
|
|
4
18
|
color: var(--vxe-ui-font-color);
|
|
5
19
|
font-family: var(--vxe-ui-font-family);
|
|
6
20
|
}
|
|
@@ -66,34 +80,34 @@
|
|
|
66
80
|
opacity: 0.3;
|
|
67
81
|
}
|
|
68
82
|
.vxe-tree--node-wrapper.node--level-0 > .vxe-tree--node-item {
|
|
69
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 0 + var(--vxe-ui-tree-node-root-indent));
|
|
83
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 0 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
70
84
|
}
|
|
71
85
|
.vxe-tree--node-wrapper.node--level-1 > .vxe-tree--node-item {
|
|
72
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 1 + var(--vxe-ui-tree-node-root-indent));
|
|
86
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 1 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
73
87
|
}
|
|
74
88
|
.vxe-tree--node-wrapper.node--level-2 > .vxe-tree--node-item {
|
|
75
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 2 + var(--vxe-ui-tree-node-root-indent));
|
|
89
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 2 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
76
90
|
}
|
|
77
91
|
.vxe-tree--node-wrapper.node--level-3 > .vxe-tree--node-item {
|
|
78
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 3 + var(--vxe-ui-tree-node-root-indent));
|
|
92
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 3 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
79
93
|
}
|
|
80
94
|
.vxe-tree--node-wrapper.node--level-4 > .vxe-tree--node-item {
|
|
81
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 4 + var(--vxe-ui-tree-node-root-indent));
|
|
95
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 4 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
82
96
|
}
|
|
83
97
|
.vxe-tree--node-wrapper.node--level-5 > .vxe-tree--node-item {
|
|
84
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 5 + var(--vxe-ui-tree-node-root-indent));
|
|
98
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 5 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
85
99
|
}
|
|
86
100
|
.vxe-tree--node-wrapper.node--level-6 > .vxe-tree--node-item {
|
|
87
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 6 + var(--vxe-ui-tree-node-root-indent));
|
|
101
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 6 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
88
102
|
}
|
|
89
103
|
.vxe-tree--node-wrapper.node--level-7 > .vxe-tree--node-item {
|
|
90
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 7 + var(--vxe-ui-tree-node-root-indent));
|
|
104
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 7 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
91
105
|
}
|
|
92
106
|
.vxe-tree--node-wrapper.node--level-8 > .vxe-tree--node-item {
|
|
93
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 8 + var(--vxe-ui-tree-node-root-indent));
|
|
107
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 8 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
94
108
|
}
|
|
95
109
|
.vxe-tree--node-wrapper.node--level-9 > .vxe-tree--node-item {
|
|
96
|
-
padding-left: calc(var(--vxe-ui-tree-node-indent) * 9 + var(--vxe-ui-tree-node-root-indent));
|
|
110
|
+
padding-left: calc(var(--vxe-ui-tree-node-indent) * 9 + var(--vxe-ui-tree-node-root-indent) + var(--vxe-ui-tree-node-padding));
|
|
97
111
|
}
|
|
98
112
|
|
|
99
113
|
/*拖拽行与列*/
|
|
@@ -308,7 +322,7 @@
|
|
|
308
322
|
color: var(--vxe-ui-input-disabled-color);
|
|
309
323
|
}
|
|
310
324
|
.vxe-tree--checkbox-option .vxe-checkbox--label {
|
|
311
|
-
padding-left: 0.
|
|
325
|
+
padding-left: 0.4em;
|
|
312
326
|
vertical-align: middle;
|
|
313
327
|
}
|
|
314
328
|
|
|
@@ -350,7 +364,7 @@
|
|
|
350
364
|
color: var(--vxe-ui-input-disabled-color);
|
|
351
365
|
}
|
|
352
366
|
.vxe-tree--radio-option .vxe-radio--label {
|
|
353
|
-
padding-left: 0.
|
|
367
|
+
padding-left: 0.4em;
|
|
354
368
|
vertical-align: middle;
|
|
355
369
|
}
|
|
356
370
|
|
|
@@ -364,17 +378,4 @@
|
|
|
364
378
|
.vxe-tree--y-space {
|
|
365
379
|
width: 0;
|
|
366
380
|
float: left;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
.vxe-tree {
|
|
370
|
-
font-size: var(--vxe-ui-font-size-default);
|
|
371
|
-
}
|
|
372
|
-
.vxe-tree.size--medium {
|
|
373
|
-
font-size: var(--vxe-ui-font-size-medium);
|
|
374
|
-
}
|
|
375
|
-
.vxe-tree.size--small {
|
|
376
|
-
font-size: var(--vxe-ui-font-size-small);
|
|
377
|
-
}
|
|
378
|
-
.vxe-tree.size--mini {
|
|
379
|
-
font-size: var(--vxe-ui-font-size-mini);
|
|
380
381
|
}
|