vxe-pc-ui 4.10.49 → 4.11.0

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 (175) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/language/ar-EG.js +2 -1
  3. package/es/language/de-DE.js +2 -1
  4. package/es/language/en-US.js +2 -1
  5. package/es/language/es-ES.js +2 -1
  6. package/es/language/fr-FR.js +2 -1
  7. package/es/language/hu-HU.js +2 -1
  8. package/es/language/hy-AM.js +2 -1
  9. package/es/language/id-ID.js +2 -1
  10. package/es/language/it-IT.js +2 -1
  11. package/es/language/ja-JP.js +2 -1
  12. package/es/language/ko-KR.js +2 -1
  13. package/es/language/ms-MY.js +2 -1
  14. package/es/language/nb-NO.js +2 -1
  15. package/es/language/pt-BR.js +2 -1
  16. package/es/language/ru-RU.js +2 -1
  17. package/es/language/th-TH.js +2 -1
  18. package/es/language/ug-CN.js +2 -1
  19. package/es/language/uk-UA.js +2 -1
  20. package/es/language/uz-UZ.js +2 -1
  21. package/es/language/vi-VN.js +2 -1
  22. package/es/language/zh-CHT.js +2 -1
  23. package/es/language/zh-CN.js +2 -1
  24. package/es/select/src/select.js +23 -2
  25. package/es/select/style.css +13 -4
  26. package/es/select/style.min.css +1 -1
  27. package/es/style.css +1 -1
  28. package/es/style.min.css +1 -1
  29. package/es/tree/src/tree.js +640 -25
  30. package/es/tree/style.css +119 -0
  31. package/es/tree/style.min.css +1 -1
  32. package/es/ui/index.js +11 -1
  33. package/es/ui/src/anime.js +46 -0
  34. package/es/ui/src/log.js +1 -1
  35. package/es/vxe-select/style.css +13 -4
  36. package/es/vxe-select/style.min.css +1 -1
  37. package/es/vxe-tree/style.css +119 -0
  38. package/es/vxe-tree/style.min.css +1 -1
  39. package/lib/icon/style/style.css +1 -1
  40. package/lib/icon/style/style.min.css +1 -1
  41. package/lib/index.umd.js +807 -37
  42. package/lib/index.umd.min.js +1 -1
  43. package/lib/language/ar-EG.js +2 -1
  44. package/lib/language/ar-EG.min.js +1 -1
  45. package/lib/language/ar-EG.umd.js +2 -1
  46. package/lib/language/de-DE.js +2 -1
  47. package/lib/language/de-DE.min.js +1 -1
  48. package/lib/language/de-DE.umd.js +2 -1
  49. package/lib/language/en-US.js +2 -1
  50. package/lib/language/en-US.min.js +1 -1
  51. package/lib/language/en-US.umd.js +2 -1
  52. package/lib/language/es-ES.js +2 -1
  53. package/lib/language/es-ES.min.js +1 -1
  54. package/lib/language/es-ES.umd.js +2 -1
  55. package/lib/language/fr-FR.js +2 -1
  56. package/lib/language/fr-FR.min.js +1 -1
  57. package/lib/language/fr-FR.umd.js +2 -1
  58. package/lib/language/hu-HU.js +2 -1
  59. package/lib/language/hu-HU.min.js +1 -1
  60. package/lib/language/hu-HU.umd.js +2 -1
  61. package/lib/language/hy-AM.js +2 -1
  62. package/lib/language/hy-AM.min.js +1 -1
  63. package/lib/language/hy-AM.umd.js +2 -1
  64. package/lib/language/id-ID.js +2 -1
  65. package/lib/language/id-ID.min.js +1 -1
  66. package/lib/language/id-ID.umd.js +2 -1
  67. package/lib/language/it-IT.js +2 -1
  68. package/lib/language/it-IT.min.js +1 -1
  69. package/lib/language/it-IT.umd.js +2 -1
  70. package/lib/language/ja-JP.js +2 -1
  71. package/lib/language/ja-JP.min.js +1 -1
  72. package/lib/language/ja-JP.umd.js +2 -1
  73. package/lib/language/ko-KR.js +2 -1
  74. package/lib/language/ko-KR.min.js +1 -1
  75. package/lib/language/ko-KR.umd.js +2 -1
  76. package/lib/language/ms-MY.js +2 -1
  77. package/lib/language/ms-MY.min.js +1 -1
  78. package/lib/language/ms-MY.umd.js +2 -1
  79. package/lib/language/nb-NO.js +2 -1
  80. package/lib/language/nb-NO.min.js +1 -1
  81. package/lib/language/nb-NO.umd.js +2 -1
  82. package/lib/language/pt-BR.js +2 -1
  83. package/lib/language/pt-BR.min.js +1 -1
  84. package/lib/language/pt-BR.umd.js +2 -1
  85. package/lib/language/ru-RU.js +2 -1
  86. package/lib/language/ru-RU.min.js +1 -1
  87. package/lib/language/ru-RU.umd.js +2 -1
  88. package/lib/language/th-TH.js +2 -1
  89. package/lib/language/th-TH.min.js +1 -1
  90. package/lib/language/th-TH.umd.js +2 -1
  91. package/lib/language/ug-CN.js +2 -1
  92. package/lib/language/ug-CN.min.js +1 -1
  93. package/lib/language/ug-CN.umd.js +2 -1
  94. package/lib/language/uk-UA.js +2 -1
  95. package/lib/language/uk-UA.min.js +1 -1
  96. package/lib/language/uk-UA.umd.js +2 -1
  97. package/lib/language/uz-UZ.js +2 -1
  98. package/lib/language/uz-UZ.min.js +1 -1
  99. package/lib/language/uz-UZ.umd.js +2 -1
  100. package/lib/language/vi-VN.js +2 -1
  101. package/lib/language/vi-VN.min.js +1 -1
  102. package/lib/language/vi-VN.umd.js +2 -1
  103. package/lib/language/zh-CHT.js +2 -1
  104. package/lib/language/zh-CHT.min.js +1 -1
  105. package/lib/language/zh-CHT.umd.js +2 -1
  106. package/lib/language/zh-CN.js +2 -1
  107. package/lib/language/zh-CN.min.js +1 -1
  108. package/lib/language/zh-CN.umd.js +2 -1
  109. package/lib/select/src/select.js +25 -2
  110. package/lib/select/src/select.min.js +1 -1
  111. package/lib/select/style/style.css +13 -4
  112. package/lib/select/style/style.min.css +1 -1
  113. package/lib/style.css +1 -1
  114. package/lib/style.min.css +1 -1
  115. package/lib/tree/src/tree.js +704 -20
  116. package/lib/tree/src/tree.min.js +1 -1
  117. package/lib/tree/style/style.css +119 -0
  118. package/lib/tree/style/style.min.css +1 -1
  119. package/lib/ui/index.js +11 -1
  120. package/lib/ui/index.min.js +1 -1
  121. package/lib/ui/src/anime.js +56 -0
  122. package/lib/ui/src/anime.min.js +1 -0
  123. package/lib/ui/src/log.js +1 -1
  124. package/lib/ui/src/log.min.js +1 -1
  125. package/lib/vxe-select/style/style.css +13 -4
  126. package/lib/vxe-select/style/style.min.css +1 -1
  127. package/lib/vxe-tree/style/style.css +119 -0
  128. package/lib/vxe-tree/style/style.min.css +1 -1
  129. package/package.json +1 -1
  130. package/packages/language/ar-EG.ts +2 -1
  131. package/packages/language/de-DE.ts +2 -1
  132. package/packages/language/en-US.ts +2 -1
  133. package/packages/language/es-ES.ts +2 -1
  134. package/packages/language/fr-FR.ts +2 -1
  135. package/packages/language/hu-HU.ts +2 -1
  136. package/packages/language/hy-AM.ts +2 -1
  137. package/packages/language/id-ID.ts +2 -1
  138. package/packages/language/it-IT.ts +2 -1
  139. package/packages/language/ja-JP.ts +2 -1
  140. package/packages/language/ko-KR.ts +2 -1
  141. package/packages/language/ms-MY.ts +2 -1
  142. package/packages/language/nb-NO.ts +2 -1
  143. package/packages/language/pt-BR.ts +2 -1
  144. package/packages/language/ru-RU.ts +2 -1
  145. package/packages/language/th-TH.ts +2 -1
  146. package/packages/language/ug-CN.ts +2 -1
  147. package/packages/language/uk-UA.ts +2 -1
  148. package/packages/language/uz-UZ.ts +2 -1
  149. package/packages/language/vi-VN.ts +2 -1
  150. package/packages/language/zh-CHT.ts +2 -1
  151. package/packages/language/zh-CN.ts +2 -1
  152. package/packages/select/src/select.ts +26 -3
  153. package/packages/tree/src/tree.ts +683 -20
  154. package/packages/ui/index.ts +10 -0
  155. package/packages/ui/src/anime.ts +52 -0
  156. package/styles/components/select.scss +13 -3
  157. package/styles/components/tree.scss +116 -0
  158. package/styles/theme/dark.scss +1 -0
  159. package/styles/theme/light.scss +1 -0
  160. package/styles/variable.scss +1 -0
  161. package/types/components/select.d.ts +6 -0
  162. package/types/components/tree.d.ts +173 -10
  163. package/types/ui/global-icon.d.ts +4 -0
  164. /package/es/icon/{iconfont.1765265204333.ttf → iconfont.1765418463677.ttf} +0 -0
  165. /package/es/icon/{iconfont.1765265204333.woff → iconfont.1765418463677.woff} +0 -0
  166. /package/es/icon/{iconfont.1765265204333.woff2 → iconfont.1765418463677.woff2} +0 -0
  167. /package/es/{iconfont.1765265204333.ttf → iconfont.1765418463677.ttf} +0 -0
  168. /package/es/{iconfont.1765265204333.woff → iconfont.1765418463677.woff} +0 -0
  169. /package/es/{iconfont.1765265204333.woff2 → iconfont.1765418463677.woff2} +0 -0
  170. /package/lib/icon/style/{iconfont.1765265204333.ttf → iconfont.1765418463677.ttf} +0 -0
  171. /package/lib/icon/style/{iconfont.1765265204333.woff → iconfont.1765418463677.woff} +0 -0
  172. /package/lib/icon/style/{iconfont.1765265204333.woff2 → iconfont.1765418463677.woff2} +0 -0
  173. /package/lib/{iconfont.1765265204333.ttf → iconfont.1765418463677.ttf} +0 -0
  174. /package/lib/{iconfont.1765265204333.woff → iconfont.1765418463677.woff} +0 -0
  175. /package/lib/{iconfont.1765265204333.woff2 → iconfont.1765418463677.woff2} +0 -0
@@ -378,6 +378,12 @@ setConfig({
378
378
  radioConfig: {
379
379
  strict: true
380
380
  },
381
+ dragConfig: {
382
+ showIcon: true,
383
+ animation: true,
384
+ showGuidesStatus: true,
385
+ showDragTip: true
386
+ },
381
387
  virtualYConfig: {
382
388
  enabled: true,
383
389
  gt: 50,
@@ -585,6 +591,10 @@ setIcon({
585
591
  TREE_NODE_OPEN: iconPrefix + 'caret-right rotate90',
586
592
  TREE_NODE_CLOSE: iconPrefix + 'caret-right',
587
593
  TREE_NODE_LOADED: iconPrefix + 'spinner roll',
594
+ TREE_DRAG: iconPrefix + 'drag-handle',
595
+ TREE_DRAG_STATUS_NODE: iconPrefix + 'sort',
596
+ TREE_DRAG_STATUS_SUB_NODE: iconPrefix + 'add-sub',
597
+ TREE_DRAG_DISABLED: iconPrefix + 'no-drop',
588
598
 
589
599
  // tree-select
590
600
  TREE_SELECT_LOADED: iconPrefix + 'spinner roll',
@@ -0,0 +1,52 @@
1
+
2
+ import XEUtils from 'xe-utils'
3
+ import { addClass, removeClass } from './dom'
4
+
5
+ const rowMoveCls = 'row--drag-move'
6
+ const colMoveClass = 'col--drag-move'
7
+
8
+ /**
9
+ * 上下拖拽
10
+ */
11
+ export function moveRowAnimateToTb (elemList: NodeListOf<HTMLElement> | HTMLDivElement[], offsetTop: number) {
12
+ XEUtils.arrayEach(elemList, trEl => {
13
+ trEl.style.transform = `translateY(${offsetTop}px)`
14
+ })
15
+ requestAnimationFrame(() => {
16
+ XEUtils.arrayEach(elemList, trEl => {
17
+ addClass(trEl, rowMoveCls)
18
+ trEl.style.transform = ''
19
+ })
20
+ })
21
+ }
22
+
23
+ export function clearRowAnimate (elem: HTMLElement | undefined, clss: string[]) {
24
+ setTimeout(() => {
25
+ if (elem) {
26
+ XEUtils.arrayEach(elem.querySelectorAll(clss.map(cls => `${cls}.${rowMoveCls}`).join(',')), elem => removeClass(elem, rowMoveCls))
27
+ }
28
+ }, 500)
29
+ }
30
+
31
+ /**
32
+ * 左右拖拽
33
+ */
34
+ export function moveColAnimateToLr (elemList: NodeListOf<HTMLElement> | HTMLDivElement[], offsetLeft: number) {
35
+ XEUtils.arrayEach(elemList, trEl => {
36
+ trEl.style.transform = `translateX(${offsetLeft}px)`
37
+ })
38
+ requestAnimationFrame(() => {
39
+ XEUtils.arrayEach(elemList, trEl => {
40
+ addClass(trEl, colMoveClass)
41
+ trEl.style.transform = ''
42
+ })
43
+ })
44
+ }
45
+
46
+ export function clearColAnimate (elem: HTMLElement | undefined, clss: string[]) {
47
+ setTimeout(() => {
48
+ if (elem) {
49
+ XEUtils.arrayEach(elem.querySelectorAll(clss.map(cls => `${cls}.${rowMoveCls}`).join(',')), elem => removeClass(elem, colMoveClass))
50
+ }
51
+ }, 500)
52
+ }
@@ -56,6 +56,7 @@
56
56
 
57
57
  .vxe-select--panel-search {
58
58
  display: block;
59
+ flex-shrink: 0;
59
60
  padding: var(--vxe-ui-layout-padding-default);
60
61
  .vxe-select-search--input {
61
62
  width: 100%;
@@ -63,13 +64,23 @@
63
64
  }
64
65
 
65
66
  .vxe-select--panel-wrapper {
67
+ display: flex;
68
+ flex-direction: column;
66
69
  position: relative;
70
+ max-height: 18em;
67
71
  border-radius: var(--vxe-ui-base-border-radius);
68
72
  border: 1px solid var(--vxe-ui-base-popup-border-color);
69
73
  box-shadow: var(--vxe-ui-base-popup-box-shadow);
70
74
  background-color: var(--vxe-ui-layout-background-color);
71
75
  }
72
76
 
77
+ .vxe-select--panel-body {
78
+ display: flex;
79
+ flex-direction: row;
80
+ flex-grow: 1;
81
+ overflow: hidden;
82
+ }
83
+
73
84
  .vxe-select--header-button {
74
85
  display: flex;
75
86
  flex-direction: row;
@@ -99,10 +110,12 @@
99
110
 
100
111
  .vxe-select--panel-header,
101
112
  .vxe-select--panel-footer {
113
+ flex-shrink: 0;
102
114
  padding: 4px 0;
103
115
  }
104
116
 
105
117
  .vxe-select-option--wrapper {
118
+ flex-grow: 1;
106
119
  position: relative;
107
120
  overflow-x: hidden;
108
121
  overflow-y: auto;
@@ -118,9 +131,6 @@
118
131
  border: 0;
119
132
  outline: 0;
120
133
  }
121
- .vxe-select-option--wrapper {
122
- max-height: 18em;
123
- }
124
134
  .vxe-select-option {
125
135
  position: relative;
126
136
  padding: 0 0.6em;
@@ -72,6 +72,122 @@
72
72
  }
73
73
  }
74
74
 
75
+ .vxe-tree--drag-handle {
76
+ flex-shrink: 0;
77
+ padding-right: 0.2em;
78
+ &:not(.is--disabled) {
79
+ cursor: grab;
80
+ &:active {
81
+ cursor: grabbing;
82
+ }
83
+ &:hover {
84
+ color: var(--vxe-ui-font-primary-color);
85
+ }
86
+ }
87
+ &.is--disabled {
88
+ color: var(--vxe-ui-input-disabled-color);
89
+ cursor: not-allowed;
90
+ }
91
+ }
92
+
93
+ .vxe-tree--node-wrapper {
94
+ &.row--drag-move {
95
+ transition: transform 0.5s ease;
96
+ }
97
+ &.node--drag-origin {
98
+ opacity: 0.3;
99
+ }
100
+ }
101
+
102
+ /*拖拽行与列*/
103
+ .vxe-tree--drag-node-line {
104
+ display: none;
105
+ position: absolute;
106
+ top: 0;
107
+ left: 0;
108
+ z-index: 11;
109
+ pointer-events: none;
110
+ }
111
+ .vxe-tree--drag-node-line {
112
+ width: 100%;
113
+ height: 1px;
114
+ border: 2px solid transparent;
115
+ &[drag-pos="top"] {
116
+ border-top-color: var(--vxe-ui-font-primary-color);
117
+ }
118
+ &[drag-pos="bottom"] {
119
+ border-bottom-color: var(--vxe-ui-font-primary-color);
120
+ }
121
+ &[drag-to-child="y"] {
122
+ border-top-color: transparent;
123
+ border-bottom-color: transparent;
124
+ border-left-color: var(--vxe-ui-status-success-color);
125
+ }
126
+ &.is--guides {
127
+ background-color: var(--vxe-ui-tree-drag-over-background-color);
128
+ }
129
+ }
130
+ .vxe-body--row-list-move {
131
+ transition-property: transform;
132
+ transition-duration: 0.35s;
133
+ }
134
+ .vxe-tree--drag-sort-tip {
135
+ display: none;
136
+ position: absolute;
137
+ top: 0;
138
+ left: 0;
139
+ padding: 0.6em 1.4em;
140
+ max-width: 50%;
141
+ min-width: 100px;
142
+ border-radius: var(--vxe-ui-border-radius);
143
+ overflow: hidden;
144
+ text-overflow: ellipsis;
145
+ white-space: nowrap;
146
+ user-select: none;
147
+ pointer-events: none;
148
+ background-color: var(--vxe-ui-layout-background-color);
149
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
150
+ z-index: 33;
151
+ &[drag-status="normal"] {
152
+ .vxe-tree--drag-sort-tip-normal-status {
153
+ display: block;
154
+ }
155
+ }
156
+ &[drag-status="sub"] {
157
+ .vxe-tree--drag-sort-tip-sub-status {
158
+ display: block;
159
+ }
160
+ }
161
+ &[drag-status="disabled"] {
162
+ .vxe-tree--drag-sort-tip-disabled-status {
163
+ display: block;
164
+ }
165
+ }
166
+ }
167
+ .vxe-tree--drag-sort-tip-wrapper {
168
+ display: flex;
169
+ flex-direction: row;
170
+ align-items: center;
171
+ }
172
+ .vxe-tree--drag-sort-tip-status {
173
+ padding-right: 0.4em;
174
+ }
175
+ .vxe-tree--drag-sort-tip-disabled-status {
176
+ display: none;
177
+ flex-shrink: 0;
178
+ color: var(--vxe-ui-status-error-color)
179
+ }
180
+ .vxe-tree--drag-sort-tip-normal-status,
181
+ .vxe-tree--drag-sort-tip-sub-status {
182
+ display: none;
183
+ }
184
+ .vxe-tree--drag-sort-tip-content {
185
+ flex-grow: 1;
186
+ overflow: hidden;
187
+ text-overflow: ellipsis;
188
+ white-space: nowrap;
189
+ }
190
+
75
191
  .vxe-tree--node-line-wrapper {
76
192
  position: relative;
77
193
  display: block;
@@ -107,6 +107,7 @@
107
107
  --vxe-ui-tree-node-hover-checkbox-checked-background-color: #6e5326;
108
108
  --vxe-ui-tree-node-current-background-color: #18222c;
109
109
  --vxe-ui-tree-node-hover-current-background-color: #262727;
110
+ --vxe-ui-tree-drag-over-background-color:rgba(48, 48, 0, 0.3);
110
111
 
111
112
  /*rate*/
112
113
  --vxe-ui-rate-item-color: #bd9537;
@@ -106,6 +106,7 @@
106
106
  --vxe-ui-tree-node-hover-checkbox-checked-background-color: #{light_variable.$vxe-ui-tree-node-hover-checkbox-checked-background-color};
107
107
  --vxe-ui-tree-node-current-background-color: #{light_variable.$vxe-ui-tree-node-current-background-color};
108
108
  --vxe-ui-tree-node-hover-current-background-color: #{light_variable.$vxe-ui-tree-node-hover-current-background-color};
109
+ --vxe-ui-tree-drag-over-background-color: #{light_variable.$vxe-ui-tree-drag-over-background-color};
109
110
 
110
111
  /*rate*/
111
112
  --vxe-ui-rate-item-color: #{light_variable.$vxe-ui-rate-item-color};
@@ -99,6 +99,7 @@ $vxe-ui-tree-node-checkbox-checked-background-color: #fff3e0 !default;
99
99
  $vxe-ui-tree-node-hover-checkbox-checked-background-color: #ffebbc !default;
100
100
  $vxe-ui-tree-node-current-background-color: #e6f7ff !default;
101
101
  $vxe-ui-tree-node-hover-current-background-color: #d7effb !default;
102
+ $vxe-ui-tree-drag-over-background-color: rgba(255,255,200,0.3) !default;
102
103
 
103
104
  /*rate*/
104
105
  $vxe-ui-rate-item-color: #f7ba2a !default;
@@ -104,6 +104,11 @@ export namespace VxeSelectPropTypes {
104
104
  export type OptionId = string
105
105
  export type OptionKey = boolean
106
106
  export type Transfer = boolean
107
+ export interface PopupConfig {
108
+ width?: number | string
109
+ height?: number | string
110
+ className?: string | ((params: { $select: VxeSelectConstructor }) => string)
111
+ }
107
112
 
108
113
  export interface VirtualYConfig {
109
114
  /**
@@ -165,6 +170,7 @@ export interface VxeSelectProps {
165
170
  remoteConfig?: VxeSelectPropTypes.RemoteConfig
166
171
  max?: VxeSelectPropTypes.Max
167
172
  transfer?: VxeSelectPropTypes.Transfer
173
+ popupConfig?: VxeSelectPropTypes.PopupConfig
168
174
  virtualYConfig?: VxeSelectPropTypes.VirtualYConfig
169
175
 
170
176
  /**
@@ -119,6 +119,83 @@ export namespace VxeTreePropTypes {
119
119
  export type IconLoaded = string
120
120
  export type Size = VxeComponentSizeType
121
121
 
122
+ export type Drag = boolean
123
+ export interface DragConfig<D = any> {
124
+ /**
125
+ * 自定义图标
126
+ */
127
+ icon?: string
128
+ /**
129
+ * 是否显示拖拽按钮图标
130
+ */
131
+ showIcon?: boolean
132
+ /**
133
+ * 显示拖拽提示,拖拽过程中显示信息
134
+ */
135
+ showDragTip?: boolean
136
+ /**
137
+ * 触发拖拽方式
138
+ */
139
+ trigger?: 'default' | 'node' | '' | null
140
+ /**
141
+ * 是否允许同级行拖拽,用于树结构,启用后允许同层级之间进行拖拽
142
+ */
143
+ isPeerDrag?: boolean
144
+ /**
145
+ * 是否允许同级/跨层行拖拽,用于树结构,启用后允许跨层级拖拽(除了上级拖到子级)
146
+ */
147
+ isCrossDrag?: boolean
148
+ /**
149
+ * 需要 isCrossDrag,是否允许拖拽成目标行的子级
150
+ */
151
+ isToChildDrag?: boolean
152
+ /**
153
+ * 需要 isCrossDrag,是否允许将自己拖拽到子级行中
154
+ */
155
+ isSelfToChildDrag?: boolean
156
+ /**
157
+ * 是否显示拖拽辅助状态显示
158
+ */
159
+ showGuidesStatus?: boolean
160
+ /**
161
+ * 是否显示拖拽动画,启用后由数据量的大小来影响渲染性能
162
+ */
163
+ animation?: boolean
164
+ /**
165
+ * 是否禁用拖拽按钮
166
+ */
167
+ disabledMethod?(params: {
168
+ $tree: VxeTreeConstructor
169
+ node: D
170
+ }): boolean
171
+ /**
172
+ * 是否显示拖拽按钮
173
+ */
174
+ visibleMethod?(params: {
175
+ $tree: VxeTreeConstructor
176
+ node: D
177
+ }): boolean
178
+ /**
179
+ * 自定义提示内容
180
+ */
181
+ tooltipMethod?(params: {
182
+ $tree: VxeTreeConstructor
183
+ node: D
184
+ }): string | number | null
185
+ /**
186
+ * 拖拽开始时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽
187
+ */
188
+ dragStartMethod?(params: VxeTreeDefines.NodeDragstartEventParams<D>): boolean
189
+ /**
190
+ * 拖拽结束时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽调整顺序
191
+ */
192
+ dragEndMethod?(params: Omit<VxeTreeDefines.NodeDragendEventParams<D>, '_index'>): Promise<boolean> | boolean
193
+ /**
194
+ * 用于 isToChildDrag,在拖拽完成后,该方法的返回值用于决定是否拖拽成子级
195
+ */
196
+ dragToChildMethod?(params: Omit<VxeTreeDefines.NodeDragToChildMethod<D>, '_index'>): boolean
197
+ }
198
+
122
199
  /**
123
200
  * 根据指定值来筛选数据
124
201
  */
@@ -221,6 +298,8 @@ export interface VxeTreeProps<D = any> {
221
298
  * 该方法用于异步加载子节点
222
299
  */
223
300
  loadMethod?: VxeTreePropTypes.LoadMethod<D>
301
+ drag?: VxeTreePropTypes.Drag
302
+ dragConfig?: VxeTreePropTypes.DragConfig
224
303
  showIcon?: VxeTreePropTypes.ShowIcon
225
304
  iconOpen?: VxeTreePropTypes.IconOpen
226
305
  iconClose?: VxeTreePropTypes.IconClose
@@ -230,11 +309,14 @@ export interface VxeTreeProps<D = any> {
230
309
  }
231
310
 
232
311
  export interface TreePrivateComputed<D = any> {
312
+ computeKeyField: ComputedRef<string>
313
+ computeParentField: ComputedRef<string>
233
314
  computeChildrenField: ComputedRef<string>
234
315
  computeMapChildrenField: ComputedRef<string>
235
316
  computeRadioOpts: ComputedRef<VxeTreePropTypes.RadioConfig<D>>
236
317
  computeCheckboxOpts: ComputedRef<VxeTreePropTypes.CheckboxConfig<D>>
237
318
  computeNodeOpts: ComputedRef<VxeTreePropTypes.NodeConfig<D>>
319
+ computeDragOpts: ComputedRef<VxeTreePropTypes.DragConfig<D>>
238
320
  }
239
321
  export interface VxeTreePrivateComputed extends TreePrivateComputed { }
240
322
 
@@ -251,6 +333,9 @@ export interface TreeReactData {
251
333
  treeList: any[]
252
334
  updateExpandedFlag: number
253
335
  updateCheckboxFlag: number
336
+
337
+ dragNode: any
338
+ dragTipText: string
254
339
  }
255
340
 
256
341
  export interface TreeInternalData {
@@ -276,6 +361,10 @@ export interface TreeInternalData {
276
361
  }
277
362
  lastScrollTime: number
278
363
  hpTimeout?: undefined | number
364
+
365
+ prevDragNode?: any
366
+ prevDragToChild?: boolean
367
+ prevDragPos?: 'top' | 'bottom' | ''
279
368
  }
280
369
 
281
370
  export interface TreeMethods<D = any> {
@@ -446,6 +535,10 @@ export interface TreeMethods<D = any> {
446
535
  * 重新计算列表
447
536
  */
448
537
  recalculate(): Promise<void>
538
+ /**
539
+ * 获取数据的全量数据
540
+ */
541
+ getFullData(): D[]
449
542
 
450
543
  /**
451
544
  * 如果有滚动条,则滚动到对应的位置
@@ -470,7 +563,36 @@ export interface TreeMethods<D = any> {
470
563
  }
471
564
  export interface VxeTreeMethods<D = any> extends TreeMethods<D> { }
472
565
 
473
- export interface TreePrivateMethods { }
566
+ export interface TreePrivateMethods {
567
+ /**
568
+ * @private
569
+ */
570
+ handleData(force?: boolean): void
571
+ /**
572
+ * @private
573
+ */
574
+ cacheNodeMap(): void
575
+ /**
576
+ * @private
577
+ */
578
+ updateAfterDataIndex(): void
579
+ /**
580
+ * @private
581
+ */
582
+ updateCheckboxStatus(): void
583
+ /**
584
+ * @private
585
+ */
586
+ updateYSpace(): void
587
+ /**
588
+ * @private
589
+ */
590
+ findNodeIndexOf(list: any[], row: any): number
591
+ /**
592
+ * @private
593
+ */
594
+ eqNode(node1: any, node2: any): boolean
595
+ }
474
596
  export interface VxeTreePrivateMethods extends TreePrivateMethods { }
475
597
 
476
598
  export type VxeTreeEmits = [
@@ -484,7 +606,10 @@ export type VxeTreeEmits = [
484
606
  'checkbox-change',
485
607
  'load-success',
486
608
  'load-error',
487
- 'scroll'
609
+ 'scroll',
610
+ 'node-dragstart',
611
+ 'node-dragover',
612
+ 'node-dragend'
488
613
  ]
489
614
 
490
615
  export namespace VxeTreeDefines {
@@ -495,6 +620,8 @@ export namespace VxeTreeDefines {
495
620
  export interface NodeCacheItem {
496
621
  item: any
497
622
  index: number
623
+ $index: number
624
+ _index: number
498
625
  items: any[]
499
626
  nodes: any[]
500
627
  parent: any
@@ -504,6 +631,33 @@ export namespace VxeTreeDefines {
504
631
  treeLoaded: boolean
505
632
  }
506
633
 
634
+ export interface NodeDragstartEventParams<D = any> {
635
+ node: D
636
+ }
637
+
638
+ export interface NodeDragoverEventParams<D = any> {
639
+ oldNode: D
640
+ targetNode: D
641
+ dragNode: D
642
+ dragPos: 'top' | 'bottom'
643
+ offsetIndex: 0 | 1
644
+ }
645
+
646
+ export interface NodeDragendEventParams<D = any> {
647
+ newNode: D
648
+ oldNode: D
649
+ dragNode: D
650
+ dragPos: 'top' | 'bottom'
651
+ dragToChild: boolean
652
+ offsetIndex: 0 | 1
653
+ _index: {
654
+ newIndex: number
655
+ oldIndex: number
656
+ }
657
+ }
658
+
659
+ export interface NodeDragToChildMethod<D = any> extends NodeDragendEventParams<D> {}
660
+
507
661
  export interface NodeClickParams<D = any> {
508
662
  node: D
509
663
  }
@@ -536,14 +690,17 @@ export namespace VxeTreeDefines {
536
690
  }
537
691
  }
538
692
 
539
- export type VxeTreeEventProps = {
540
- onNodeClick?: VxeTreeEvents.NodeClick
541
- onNodeDblclick?: VxeTreeEvents.NodeDblclick
542
- onCurrentChange?: VxeTreeEvents.CurrentChange
543
- onRadioChange?: VxeTreeEvents.RadioChange
544
- onCheckboxChange?: VxeTreeEvents.CheckboxChange
545
- onLoadSuccess?: VxeTreeEvents.LoadSuccess
546
- onLoadError?: VxeTreeEvents.LoadError
693
+ export type VxeTreeEventProps<D = any> = {
694
+ onNodeClick?: VxeTreeEvents.NodeClick<D>
695
+ onNodeDblclick?: VxeTreeEvents.NodeDblclick<D>
696
+ onCurrentChange?: VxeTreeEvents.CurrentChange<D>
697
+ onRadioChange?: VxeTreeEvents.RadioChange<D>
698
+ onCheckboxChange?: VxeTreeEvents.CheckboxChange<D>
699
+ onLoadSuccess?: VxeTreeEvents.LoadSuccess<D>
700
+ onLoadError?: VxeTreeEvents.LoadError<D>
701
+ onNodeDragstart?: VxeTreeEvents.NodeDragstart<D>
702
+ onNodeDragover?: VxeTreeEvents.NodeDragover<D>
703
+ onNodeDragend?: VxeTreeEvents.NodeDragend<D>
547
704
  }
548
705
 
549
706
  export interface VxeTreeListeners<D = any> {
@@ -554,6 +711,9 @@ export interface VxeTreeListeners<D = any> {
554
711
  checkboxChange?: VxeTreeEvents.CheckboxChange<D>
555
712
  loadSuccess?: VxeTreeEvents.LoadSuccess<D>
556
713
  loadError?: VxeTreeEvents.LoadError<D>
714
+ nodeDragstart?: VxeTreeEvents.NodeDragstart<D>
715
+ nodeDragover?: VxeTreeEvents.NodeDragover<D>
716
+ nodeDragend?: VxeTreeEvents.NodeDragend<D>
557
717
  }
558
718
 
559
719
  export namespace VxeTreeEvents {
@@ -564,6 +724,9 @@ export namespace VxeTreeEvents {
564
724
  export type CheckboxChange<D = any> = (params: VxeTreeDefines.CheckboxChangeEventParams<D>) => void
565
725
  export type LoadSuccess<D = any> = (params: VxeTreeDefines.LoadSuccessEventParams<D>) => void
566
726
  export type LoadError<D = any> = (params: VxeTreeDefines.LoadErrorEventParams<D>) => void
727
+ export type NodeDragstart<D = any> = (params: VxeTreeDefines.NodeDragstartEventParams<D>) => void
728
+ export type NodeDragover<D = any> = (params: VxeTreeDefines.NodeDragoverEventParams<D>) => void
729
+ export type NodeDragend<D = any> = (params: VxeTreeDefines.NodeDragendEventParams<D>) => void
567
730
  }
568
731
 
569
732
  export namespace VxeTreeSlotTypes {
@@ -206,6 +206,10 @@ declare module '@vxe-ui/core' {
206
206
  TREE_NODE_OPEN?: string
207
207
  TREE_NODE_CLOSE?: string
208
208
  TREE_NODE_LOADED?: string
209
+ TREE_DRAG?: string
210
+ TREE_DRAG_STATUS_NODE?: string
211
+ TREE_DRAG_STATUS_SUB_NODE?: string
212
+ TREE_DRAG_DISABLED?: string
209
213
 
210
214
  // tree-select
211
215
  TREE_SELECT_LOADED?: string