vxe-table 3.11.21 → 3.11.22

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 (150) hide show
  1. package/es/{iconfont.1733469864818.ttf → iconfont.1733702408214.ttf} +0 -0
  2. package/es/iconfont.1733702408214.woff +0 -0
  3. package/es/iconfont.1733702408214.woff2 +0 -0
  4. package/es/index.css +1 -1
  5. package/es/index.min.css +1 -1
  6. package/es/locale/lang/ar-EG.js +2 -0
  7. package/es/locale/lang/de-DE.js +2 -0
  8. package/es/locale/lang/en-US.js +3 -1
  9. package/es/locale/lang/es-ES.js +2 -0
  10. package/es/locale/lang/fr-FR.js +2 -0
  11. package/es/locale/lang/hu-HU.js +2 -0
  12. package/es/locale/lang/hy-AM.js +2 -0
  13. package/es/locale/lang/ja-JP.js +2 -0
  14. package/es/locale/lang/ko-KR.js +2 -0
  15. package/es/locale/lang/nb-NO.js +2 -0
  16. package/es/locale/lang/pt-BR.js +2 -0
  17. package/es/locale/lang/ru-RU.js +2 -0
  18. package/es/locale/lang/ug-CN.js +2 -0
  19. package/es/locale/lang/uk-UA.js +2 -0
  20. package/es/locale/lang/vi-VN.js +2 -0
  21. package/es/locale/lang/zh-CHT.js +2 -0
  22. package/es/locale/lang/zh-CN.js +2 -0
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/custom/mixin.js +8 -3
  26. package/es/table/module/custom/panel.js +44 -27
  27. package/es/table/src/body.js +2 -2
  28. package/es/table/src/cell.js +7 -2
  29. package/es/table/src/header.js +1 -1
  30. package/es/table/src/methods.js +175 -43
  31. package/es/table/src/table.js +31 -4
  32. package/es/table/style.css +62 -4
  33. package/es/table/style.min.css +1 -1
  34. package/es/ui/index.js +4 -1
  35. package/es/ui/src/log.js +1 -1
  36. package/es/vxe-table/style.css +62 -4
  37. package/es/vxe-table/style.min.css +1 -1
  38. package/lib/{iconfont.1733469864818.ttf → iconfont.1733702408214.ttf} +0 -0
  39. package/lib/iconfont.1733702408214.woff +0 -0
  40. package/lib/iconfont.1733702408214.woff2 +0 -0
  41. package/lib/index.css +1 -1
  42. package/lib/index.min.css +1 -1
  43. package/lib/index.umd.js +297 -92
  44. package/lib/index.umd.min.js +1 -1
  45. package/lib/locale/lang/ar-EG.js +2 -0
  46. package/lib/locale/lang/ar-EG.min.js +1 -1
  47. package/lib/locale/lang/de-DE.js +2 -0
  48. package/lib/locale/lang/de-DE.min.js +1 -1
  49. package/lib/locale/lang/en-US.js +3 -1
  50. package/lib/locale/lang/en-US.min.js +1 -1
  51. package/lib/locale/lang/en-US.umd.js +3 -1
  52. package/lib/locale/lang/es-ES.js +2 -0
  53. package/lib/locale/lang/es-ES.min.js +1 -1
  54. package/lib/locale/lang/es-ES.umd.js +2 -0
  55. package/lib/locale/lang/fr-FR.js +2 -0
  56. package/lib/locale/lang/fr-FR.min.js +1 -1
  57. package/lib/locale/lang/hu-HU.js +2 -0
  58. package/lib/locale/lang/hu-HU.min.js +1 -1
  59. package/lib/locale/lang/hu-HU.umd.js +2 -0
  60. package/lib/locale/lang/hy-AM.js +2 -0
  61. package/lib/locale/lang/hy-AM.min.js +1 -1
  62. package/lib/locale/lang/ja-JP.js +2 -0
  63. package/lib/locale/lang/ja-JP.min.js +1 -1
  64. package/lib/locale/lang/ja-JP.umd.js +2 -0
  65. package/lib/locale/lang/ko-KR.js +2 -0
  66. package/lib/locale/lang/ko-KR.min.js +1 -1
  67. package/lib/locale/lang/ko-KR.umd.js +2 -0
  68. package/lib/locale/lang/nb-NO.js +2 -0
  69. package/lib/locale/lang/nb-NO.min.js +1 -1
  70. package/lib/locale/lang/pt-BR.js +2 -0
  71. package/lib/locale/lang/pt-BR.min.js +1 -1
  72. package/lib/locale/lang/pt-BR.umd.js +2 -0
  73. package/lib/locale/lang/ru-RU.js +2 -0
  74. package/lib/locale/lang/ru-RU.min.js +1 -1
  75. package/lib/locale/lang/ru-RU.umd.js +2 -0
  76. package/lib/locale/lang/ug-CN.js +2 -0
  77. package/lib/locale/lang/ug-CN.min.js +1 -1
  78. package/lib/locale/lang/uk-UA.js +2 -0
  79. package/lib/locale/lang/uk-UA.min.js +1 -1
  80. package/lib/locale/lang/uk-UA.umd.js +2 -0
  81. package/lib/locale/lang/vi-VN.js +2 -0
  82. package/lib/locale/lang/vi-VN.min.js +1 -1
  83. package/lib/locale/lang/zh-CHT.js +2 -0
  84. package/lib/locale/lang/zh-CHT.min.js +1 -1
  85. package/lib/locale/lang/zh-CHT.umd.js +2 -0
  86. package/lib/locale/lang/zh-CN.js +2 -0
  87. package/lib/locale/lang/zh-CN.min.js +1 -1
  88. package/lib/locale/lang/zh-CN.umd.js +2 -0
  89. package/lib/style.css +1 -1
  90. package/lib/style.min.css +1 -1
  91. package/lib/table/module/custom/mixin.js +8 -3
  92. package/lib/table/module/custom/mixin.min.js +1 -1
  93. package/lib/table/module/custom/panel.js +49 -37
  94. package/lib/table/module/custom/panel.min.js +1 -1
  95. package/lib/table/src/body.js +2 -2
  96. package/lib/table/src/body.min.js +1 -1
  97. package/lib/table/src/cell.js +6 -1
  98. package/lib/table/src/cell.min.js +1 -1
  99. package/lib/table/src/header.js +1 -1
  100. package/lib/table/src/header.min.js +1 -1
  101. package/lib/table/src/methods.js +199 -43
  102. package/lib/table/src/methods.min.js +1 -1
  103. package/lib/table/src/table.js +25 -3
  104. package/lib/table/src/table.min.js +1 -1
  105. package/lib/table/style/style.css +62 -4
  106. package/lib/table/style/style.min.css +1 -1
  107. package/lib/ui/index.js +4 -1
  108. package/lib/ui/index.min.js +1 -1
  109. package/lib/ui/src/log.js +1 -1
  110. package/lib/ui/src/log.min.js +1 -1
  111. package/lib/vxe-table/style/style.css +62 -4
  112. package/lib/vxe-table/style/style.min.css +1 -1
  113. package/package.json +2 -2
  114. package/packages/locale/lang/ar-EG.ts +2 -0
  115. package/packages/locale/lang/de-DE.ts +2 -0
  116. package/packages/locale/lang/en-US.ts +3 -1
  117. package/packages/locale/lang/es-ES.ts +2 -0
  118. package/packages/locale/lang/fr-FR.ts +2 -0
  119. package/packages/locale/lang/hu-HU.ts +2 -0
  120. package/packages/locale/lang/hy-AM.ts +2 -0
  121. package/packages/locale/lang/ja-JP.ts +2 -0
  122. package/packages/locale/lang/ko-KR.ts +2 -0
  123. package/packages/locale/lang/nb-NO.ts +2 -0
  124. package/packages/locale/lang/pt-BR.ts +2 -0
  125. package/packages/locale/lang/ru-RU.ts +2 -0
  126. package/packages/locale/lang/ug-CN.ts +2 -0
  127. package/packages/locale/lang/uk-UA.ts +2 -0
  128. package/packages/locale/lang/vi-VN.ts +2 -0
  129. package/packages/locale/lang/zh-CHT.ts +2 -0
  130. package/packages/locale/lang/zh-CN.ts +2 -0
  131. package/packages/table/module/custom/mixin.ts +9 -3
  132. package/packages/table/module/custom/panel.ts +48 -27
  133. package/packages/table/src/body.ts +2 -2
  134. package/packages/table/src/cell.ts +8 -2
  135. package/packages/table/src/header.ts +1 -1
  136. package/packages/table/src/methods.ts +187 -45
  137. package/packages/table/src/table.ts +34 -4
  138. package/packages/ui/index.ts +3 -0
  139. package/styles/components/icon.scss +13 -1
  140. package/styles/components/table.scss +53 -3
  141. package/styles/icon/iconfont.ttf +0 -0
  142. package/styles/icon/iconfont.woff +0 -0
  143. package/styles/icon/iconfont.woff2 +0 -0
  144. package/styles/theme/dark.scss +1 -0
  145. package/styles/theme/light.scss +1 -0
  146. package/styles/variable.scss +1 -0
  147. package/es/iconfont.1733469864818.woff +0 -0
  148. package/es/iconfont.1733469864818.woff2 +0 -0
  149. package/lib/iconfont.1733469864818.woff +0 -0
  150. package/lib/iconfont.1733469864818.woff2 +0 -0
@@ -439,7 +439,7 @@ const updateColDropTipContent = ($xeTable: any, tdEl: HTMLElement) => {
439
439
  reactData.dragTipText = tipContent
440
440
  }
441
441
 
442
- function showDropTip ($xeTable: any, evnt: DragEvent | MouseEvent, trEl: HTMLElement | null, thEl: HTMLElement | null, dragPos: string) {
442
+ function showDropTip ($xeTable: any, evnt: DragEvent | MouseEvent, trEl: HTMLElement | null, thEl: HTMLElement | null, showLine: boolean, dragPos: string) {
443
443
  const reactData = $xeTable
444
444
 
445
445
  const el = $xeTable.$refs.refElem as HTMLElement
@@ -451,26 +451,30 @@ function showDropTip ($xeTable: any, evnt: DragEvent | MouseEvent, trEl: HTMLEle
451
451
  if (trEl) {
452
452
  const rdLineEl = $xeTable.$refs.refDragRowLineElem as HTMLElement
453
453
  if (rdLineEl) {
454
- const trRect = trEl.getBoundingClientRect()
455
- let top = Math.max(1, trRect.y - wrapperRect.y)
456
- if (dragPos === 'bottom') {
457
- top = Math.min(wrapperRect.height - 1, trRect.y - wrapperRect.y + trRect.height)
454
+ if (showLine) {
455
+ const trRect = trEl.getBoundingClientRect()
456
+ rdLineEl.style.display = 'block'
457
+ rdLineEl.style.top = `${Math.max(1, trRect.y - wrapperRect.y)}px`
458
+ rdLineEl.style.height = `${trRect.height}px`
459
+ rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`
460
+ rdLineEl.setAttribute('drag-pos', dragPos)
461
+ } else {
462
+ rdLineEl.style.display = ''
458
463
  }
459
- rdLineEl.style.top = `${top}px`
460
- rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`
461
- rdLineEl.style.display = 'block'
462
464
  }
463
465
  } else if (thEl) {
464
466
  const cdLineEl = $xeTable.$refs.refDragColLineElem as HTMLElement
465
467
  if (cdLineEl) {
466
- const thRect = thEl.getBoundingClientRect()
467
- let left = Math.max(1, thRect.x - wrapperRect.x)
468
- if (dragPos === 'right') {
469
- left = Math.min(wrapperRect.width - 2, thRect.x - wrapperRect.x + thRect.width)
468
+ if (showLine) {
469
+ const thRect = thEl.getBoundingClientRect()
470
+ cdLineEl.style.display = 'block'
471
+ cdLineEl.style.left = `${Math.max(1, thRect.x - wrapperRect.x)}px`
472
+ cdLineEl.style.width = `${thRect.width}px`
473
+ cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`
474
+ cdLineEl.setAttribute('drag-pos', dragPos)
475
+ } else {
476
+ cdLineEl.style.display = ''
470
477
  }
471
- cdLineEl.style.left = `${left}px`
472
- cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`
473
- cdLineEl.style.display = 'block'
474
478
  }
475
479
  }
476
480
  const rdTipEl = $xeTable.$refs.refDragTipElem as HTMLElement
@@ -478,6 +482,7 @@ function showDropTip ($xeTable: any, evnt: DragEvent | MouseEvent, trEl: HTMLEle
478
482
  rdTipEl.style.display = 'block'
479
483
  rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`
480
484
  rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`
485
+ rdTipEl.setAttribute('drag-status', showLine ? 'normal' : 'disabled')
481
486
  }
482
487
  }
483
488
 
@@ -964,6 +969,7 @@ const Methods = {
964
969
  cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, items, parent, level, height: 0 }
965
970
  }
966
971
  if (isSource) {
972
+ cacheItem.level = level
967
973
  cacheItem.index = treeConfig && parent ? -1 : index
968
974
  fullDataRowIdMaps[rowid] = cacheItem
969
975
  }
@@ -1663,6 +1669,16 @@ const Methods = {
1663
1669
  tableColumn: this.tableColumn.slice(0)
1664
1670
  }
1665
1671
  },
1672
+ /**
1673
+ * 获取表格的全量列
1674
+ */
1675
+ getFullColumns () {
1676
+ const $xeTable = this
1677
+ const internalData = $xeTable
1678
+
1679
+ const { collectColumn } = internalData
1680
+ return collectColumn.slice(0)
1681
+ },
1666
1682
  /**
1667
1683
  * 获取数据,和 data 的行为一致,也可以指定索引获取数据
1668
1684
  */
@@ -2016,6 +2032,32 @@ const Methods = {
2016
2032
  footerData: footerTableData.slice(0)
2017
2033
  }
2018
2034
  },
2035
+ /**
2036
+ * 获取表格的全量数据,如果是 tree-config 则返回带层级的树结构
2037
+ */
2038
+ getFullData () {
2039
+ const $xeTable = this
2040
+ const props = $xeTable
2041
+ const internalData = $xeTable
2042
+
2043
+ const { treeConfig } = props
2044
+ const { tableFullData, tableFullTreeData } = internalData
2045
+ if (treeConfig) {
2046
+ const treeOpts = $xeTable.computeTreeOpts
2047
+ const { transform, mapChildrenField } = treeOpts
2048
+ const childrenField = treeOpts.children || treeOpts.childrenField
2049
+ if (transform) {
2050
+ return XEUtils.toArrayTree(
2051
+ XEUtils.toTreeArray(tableFullTreeData, {
2052
+ children: mapChildrenField
2053
+ }),
2054
+ { children: childrenField }
2055
+ )
2056
+ }
2057
+ return tableFullTreeData.slice(0)
2058
+ }
2059
+ return tableFullData.slice(0)
2060
+ },
2019
2061
  /**
2020
2062
  * 处理数据加载默认行为
2021
2063
  * 默认执行一次,除非被重置
@@ -2218,7 +2260,11 @@ const Methods = {
2218
2260
  return this.refreshColumn(true)
2219
2261
  },
2220
2262
  handleCustomRestore (storeData: any) {
2221
- let { collectColumn } = this
2263
+ const $xetable = this
2264
+ const reactData = $xetable
2265
+ const internalData = $xetable
2266
+
2267
+ let { collectColumn } = internalData
2222
2268
  const { resizableData, sortData, visibleData, fixedData } = storeData
2223
2269
  let hasCustomSort = false
2224
2270
  // 处理还原
@@ -2245,9 +2291,12 @@ const Methods = {
2245
2291
  // 如果自定义了顺序
2246
2292
  if (hasCustomSort) {
2247
2293
  collectColumn = XEUtils.orderBy(collectColumn, 'renderSortNumber')
2248
- this.collectColumn = collectColumn
2249
- this.tableFullColumn = getColumnList(collectColumn)
2294
+ internalData.collectColumn = collectColumn
2295
+ internalData.tableFullColumn = getColumnList(collectColumn)
2250
2296
  }
2297
+ reactData.isCustomStatus = true
2298
+ } else {
2299
+ reactData.isCustomStatus = false
2251
2300
  }
2252
2301
  },
2253
2302
  /**
@@ -4998,11 +5047,13 @@ const Methods = {
4998
5047
 
4999
5048
  const { treeConfig, dragConfig } = props
5000
5049
  const rowDragOpts = $xeTable.computeRowDragOpts
5001
- const { dragEndMethod } = rowDragOpts
5050
+ const { fullAllDataRowIdData } = internalData
5051
+ const { isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts
5002
5052
  const treeOpts = $xeTable.computeTreeOpts
5003
- const { transform } = treeOpts
5053
+ const { transform, mapChildrenField, parentField } = treeOpts
5054
+ const childrenField = treeOpts.children || treeOpts.childrenField
5004
5055
  const { dragRow } = reactData
5005
- const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData
5056
+ const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
5006
5057
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
5007
5058
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
5008
5059
  if (prevDragRow && dragRow) {
@@ -5024,27 +5075,105 @@ const Methods = {
5024
5075
 
5025
5076
  let oafIndex = -1
5026
5077
  let nafIndex = -1
5078
+ // 如果为树结构
5027
5079
  if (treeConfig) {
5028
- // 移出源位置
5029
- oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow)
5030
- const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow)
5031
- afterTreeFullData.splice(oafIndex, 1)
5032
- tableFullTreeData.splice(otfIndex, 1)
5033
-
5034
- // 插新位置
5035
- const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow)
5036
- const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow)
5037
- nafIndex = pafIndex + dragOffsetIndex
5038
- const ntfIndex = ptfIndex + dragOffsetIndex
5039
- afterTreeFullData.splice(nafIndex, 0, dragRow)
5040
- tableFullTreeData.splice(ntfIndex, 0, dragRow)
5080
+ if (transform) {
5081
+ // 移出源位置
5082
+ const oldRowid = getRowid($xeTable, dragRow)
5083
+ const oldRest = fullAllDataRowIdData[oldRowid]
5084
+ const newRowid = getRowid($xeTable, prevDragRow)
5085
+ const newRest = fullAllDataRowIdData[newRowid]
5086
+ if (oldRest && newRest) {
5087
+ const { level: oldLevel } = oldRest
5088
+ const { level: newLevel } = newRest
5089
+
5090
+ const oldAllMaps: Record<string, any> = {}
5091
+ XEUtils.eachTree([dragRow], item => {
5092
+ oldAllMaps[getRowid($xeTable, item)] = item
5093
+ }, { children: mapChildrenField })
5094
+
5095
+ let isSelfToChildStatus = false
5096
+
5097
+ if (oldLevel && newLevel) {
5098
+ // 子到子
5099
+
5100
+ if (!isCrossDrag) {
5101
+ return
5102
+ }
5103
+ if (oldAllMaps[newRowid]) {
5104
+ if (!isSelfToChildDrag) {
5105
+ isSelfToChildStatus = true
5106
+ if (VxeUI.modal) {
5107
+ VxeUI.modal.message({
5108
+ status: 'error',
5109
+ content: getI18n('vxe.error.treeDragChild')
5110
+ })
5111
+ }
5112
+ return
5113
+ }
5114
+ }
5115
+ } else if (oldLevel) {
5116
+ // 子到根
5117
+
5118
+ if (!isCrossDrag) {
5119
+ return
5120
+ }
5121
+ } else if (newLevel) {
5122
+ // 根到子
5123
+
5124
+ if (!isCrossDrag) {
5125
+ return
5126
+ }
5127
+ if (oldAllMaps[newRowid]) {
5128
+ isSelfToChildStatus = true
5129
+ if (!isSelfToChildDrag) {
5130
+ if (VxeUI.modal) {
5131
+ VxeUI.modal.message({
5132
+ status: 'error',
5133
+ content: getI18n('vxe.error.treeDragChild')
5134
+ })
5135
+ }
5136
+ return
5137
+ }
5138
+ }
5139
+ } else {
5140
+ // 根到根
5141
+ }
5142
+
5143
+ const fullList = XEUtils.toTreeArray(internalData.afterTreeFullData, { children: childrenField })
5144
+
5145
+ // 移出
5146
+ const otfIndex = $xeTable.findRowIndexOf(fullList, dragRow)
5147
+ fullList.splice(otfIndex, 1)
5148
+
5149
+ // 插入
5150
+ const ptfIndex = $xeTable.findRowIndexOf(fullList, prevDragRow)
5151
+ const ntfIndex = ptfIndex + dragOffsetIndex
5152
+ fullList.splice(ntfIndex, 0, dragRow)
5153
+
5154
+ // 改变层级
5155
+ if (isSelfToChildStatus && isSelfToChildDrag) {
5156
+ XEUtils.each(dragRow[childrenField], childRow => {
5157
+ childRow[parentField] = dragRow[parentField]
5158
+ })
5159
+ }
5160
+ dragRow[parentField] = prevDragRow[parentField]
5161
+
5162
+ internalData.tableFullTreeData = XEUtils.toArrayTree(fullList, {
5163
+ key: treeOpts.rowField,
5164
+ parentKey: treeOpts.parentField,
5165
+ children: childrenField,
5166
+ mapChildren: treeOpts.mapChildrenField
5167
+ })
5168
+ }
5169
+ }
5041
5170
  } else {
5042
- // 移出源位置
5171
+ // 移出
5043
5172
  oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
5044
5173
  const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
5045
5174
  afterFullData.splice(oafIndex, 1)
5046
5175
  tableFullData.splice(otfIndex, 1)
5047
- // 插新位置
5176
+ // 插入
5048
5177
  const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
5049
5178
  const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
5050
5179
  nafIndex = pafIndex + dragOffsetIndex
@@ -5054,9 +5183,9 @@ const Methods = {
5054
5183
  }
5055
5184
 
5056
5185
  reactData.isDragRowMove = true
5057
- $xeTable.cacheRowMap()
5058
- $xeTable.updateScrollYStatus()
5059
5186
  $xeTable.handleTableData(treeConfig && transform)
5187
+ $xeTable.cacheRowMap(true)
5188
+ $xeTable.updateScrollYStatus()
5060
5189
  if (!(treeConfig && transform)) {
5061
5190
  $xeTable.updateAfterDataIndex()
5062
5191
  }
@@ -5072,7 +5201,7 @@ const Methods = {
5072
5201
  $xeTable.dispatchEvent('row-dragend', {
5073
5202
  oldRow: dragRow,
5074
5203
  newRow: prevDragRow,
5075
- dragPos: prevDragPos,
5204
+ dragPos: prevDragPos as any,
5076
5205
  offsetIndex: dragOffsetIndex,
5077
5206
  _index: {
5078
5207
  newIndex: nafIndex,
@@ -5093,26 +5222,35 @@ const Methods = {
5093
5222
  },
5094
5223
  handleRowDragDragoverEvent (evnt: DragEvent) {
5095
5224
  const $xeTable = this
5225
+ const props = $xeTable
5096
5226
  const internalData = $xeTable
5097
5227
  const reactData = $xeTable
5098
5228
 
5229
+ const { treeConfig } = props
5230
+ const { fullAllDataRowIdData } = internalData
5099
5231
  const { dragRow } = reactData
5232
+ const rowDragOpts = $xeTable.computeRowDragOpts
5233
+ const { isCrossDrag } = rowDragOpts
5100
5234
  if (!dragRow) {
5101
5235
  evnt.preventDefault()
5102
5236
  return
5103
5237
  }
5104
5238
  const trEl = evnt.currentTarget as HTMLElement
5105
- const rowid = trEl.getAttribute('rowid')
5106
- const row = $xeTable.getRowById(rowid)
5107
- if (row) {
5108
- evnt.preventDefault()
5239
+ const rowid = trEl.getAttribute('rowid') || ''
5240
+ const rest = fullAllDataRowIdData[rowid]
5241
+ if (rest) {
5242
+ const row = rest.row
5109
5243
  evnt.preventDefault()
5110
5244
  const { dragRow } = reactData
5111
5245
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
5112
5246
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
5247
+ if ($xeTable.eqRow(dragRow, row) || (!isCrossDrag && treeConfig && rest.level)) {
5248
+ showDropTip($xeTable, evnt, trEl, null, false, dragPos)
5249
+ return
5250
+ }
5113
5251
  internalData.prevDragRow = row
5114
5252
  internalData.prevDragPos = dragPos
5115
- showDropTip($xeTable, evnt, trEl, null, dragPos)
5253
+ showDropTip($xeTable, evnt, trEl, null, true, dragPos)
5116
5254
  $xeTable.dispatchEvent('row-dragover', {
5117
5255
  oldRow: dragRow,
5118
5256
  targetRow: row,
@@ -5276,9 +5414,13 @@ const Methods = {
5276
5414
  const { dragCol } = reactData
5277
5415
  const offsetX = evnt.clientX - thEl.getBoundingClientRect().x
5278
5416
  const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right'
5417
+ if (dragCol.id === column.id || column.parentId) {
5418
+ showDropTip($xeTable, evnt, null, thEl, false, dragPos)
5419
+ return
5420
+ }
5279
5421
  internalData.prevDragCol = column
5280
5422
  internalData.prevDragPos = dragPos
5281
- showDropTip($xeTable, evnt, null, thEl, dragPos)
5423
+ showDropTip($xeTable, evnt, null, thEl, true, dragPos)
5282
5424
  $xeTable.dispatchEvent('column-dragover', {
5283
5425
  oldColumn: dragCol,
5284
5426
  targetColumn: column,
@@ -25,7 +25,7 @@ import customMixin from '../module/custom/mixin'
25
25
 
26
26
  import type { VxeLoadingComponent, VxeTooltipComponent, VxeTabsConstructor, VxeTabsPrivateMethods } from 'vxe-pc-ui'
27
27
 
28
- const { getConfig, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI
28
+ const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI
29
29
 
30
30
  /**
31
31
  * 渲染浮固定列
@@ -121,8 +121,13 @@ const renderDragTipContents = (h: CreateElement, $xeTable: any) => {
121
121
  }
122
122
 
123
123
  const renderDragTip = (h: CreateElement, $xeTable: any) => {
124
+ const reactData = $xeTable
125
+
126
+ const { dragRow } = reactData
124
127
  const rowOpts = $xeTable.computeRowOpts
125
128
  const columnOpts = $xeTable.computeColumnOpts
129
+ const rowDragOpts = $xeTable.computeRowDragOpts
130
+ const columnDragOpts = $xeTable.computeColumnDragOpts
126
131
 
127
132
  if (rowOpts.drag || columnOpts.drag) {
128
133
  return h('div', {
@@ -130,16 +135,38 @@ const renderDragTip = (h: CreateElement, $xeTable: any) => {
130
135
  }, [
131
136
  h('div', {
132
137
  ref: 'refDragRowLineElem',
133
- class: 'vxe-table--drag-row-line'
138
+ class: ['vxe-table--drag-row-line', {
139
+ 'is--guides': rowDragOpts.showGuidesStatus
140
+ }]
134
141
  }),
135
142
  h('div', {
136
143
  ref: 'refDragColLineElem',
137
- class: 'vxe-table--drag-col-line'
144
+ class: ['vxe-table--drag-col-line', {
145
+ 'is--guides': columnDragOpts.showGuidesStatus
146
+ }]
138
147
  }),
139
148
  h('div', {
140
149
  ref: 'refDragTipElem',
141
150
  class: 'vxe-table--drag-sort-tip'
142
- }, renderDragTipContents(h, $xeTable))
151
+ }, [
152
+ h('div', {
153
+ class: 'vxe-table--drag-sort-tip-wrapper'
154
+ }, [
155
+ h('div', {
156
+ class: 'vxe-table--drag-sort-tip-status'
157
+ }, [
158
+ h('span', {
159
+ class: ['vxe-table--drag-sort-tip-normal-status', dragRow ? getIcon().TABLE_DRAG_STATUS_ROW : getIcon().TABLE_DRAG_STATUS_COLUMN]
160
+ }),
161
+ h('span', {
162
+ class: ['vxe-table--drag-sort-tip-disabled-status', getIcon().TABLE_DRAG_DISABLED]
163
+ })
164
+ ]),
165
+ h('div', {
166
+ class: 'vxe-table--drag-sort-tip-content'
167
+ }, renderDragTipContents(h, $xeTable))
168
+ ])
169
+ ])
143
170
  ])
144
171
  }
145
172
  return renderEmptyElement($xeTable)
@@ -400,6 +427,9 @@ export default {
400
427
  },
401
428
 
402
429
  scrollVMLoading: false,
430
+
431
+ isCustomStatus: false,
432
+
403
433
  isDragRowMove: false,
404
434
  dragRow: null,
405
435
  isDragColMove: false,
@@ -257,6 +257,9 @@ VxeUI.setIcon({
257
257
  TABLE_MENU_OPTIONS: iconPrefix + 'arrow-right',
258
258
  TABLE_DRAG_ROW: iconPrefix + 'drag-handle',
259
259
  TABLE_DRAG_COLUMN: iconPrefix + 'drag-handle',
260
+ TABLE_DRAG_STATUS_ROW: iconPrefix + 'sort',
261
+ TABLE_DRAG_STATUS_COLUMN: iconPrefix + 'swap',
262
+ TABLE_DRAG_DISABLED: iconPrefix + 'no-drop',
260
263
 
261
264
  // toolbar
262
265
  TOOLBAR_TOOLS_REFRESH: iconPrefix + 'repeat',
@@ -5,7 +5,7 @@
5
5
  @font-face {
6
6
  font-family: "vxetableiconfont";
7
7
  src:
8
- url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
8
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
9
9
  }
10
10
 
11
11
  @keyframes rollCircle {
@@ -79,6 +79,18 @@ $btnThemeList: (
79
79
  }
80
80
  }
81
81
 
82
+ .vxe-table-icon-swap:before {
83
+ content: "\e7f3";
84
+ }
85
+
86
+ .vxe-table-icon-sort:before {
87
+ content: "\e93e";
88
+ }
89
+
90
+ .vxe-table-icon-no-drop:before {
91
+ content: "\e658";
92
+ }
93
+
82
94
  .vxe-table-icon-edit:before {
83
95
  content: "\e66e";
84
96
  }
@@ -1279,7 +1279,16 @@
1279
1279
  .vxe-table--drag-col-line {
1280
1280
  height: 100%;
1281
1281
  width: 1px;
1282
- background-color: var(--vxe-ui-font-primary-color);
1282
+ border: 2px solid transparent;
1283
+ &[drag-pos="left"] {
1284
+ border-left-color: var(--vxe-ui-font-primary-color);
1285
+ }
1286
+ &[drag-pos="right"] {
1287
+ border-right-color: var(--vxe-ui-font-primary-color);
1288
+ }
1289
+ &.is--guides {
1290
+ background-color: var( --vxe-ui-table-drag-over-background-color);
1291
+ }
1283
1292
  }
1284
1293
  .vxe-header--column,
1285
1294
  .vxe-body--column,
@@ -1327,7 +1336,16 @@
1327
1336
  .vxe-table--drag-row-line {
1328
1337
  width: 100%;
1329
1338
  height: 1px;
1330
- background-color: var(--vxe-ui-font-primary-color);
1339
+ border: 2px solid transparent;
1340
+ &[drag-pos="top"] {
1341
+ border-top-color: var(--vxe-ui-font-primary-color);
1342
+ }
1343
+ &[drag-pos="bottom"] {
1344
+ border-bottom-color: var(--vxe-ui-font-primary-color);
1345
+ }
1346
+ &.is--guides {
1347
+ background-color: var( --vxe-ui-table-drag-over-background-color);
1348
+ }
1331
1349
  }
1332
1350
  .vxe-body--row {
1333
1351
  &.row--drag-origin {
@@ -1346,7 +1364,7 @@
1346
1364
  position: absolute;
1347
1365
  top: 0;
1348
1366
  left: 0;
1349
- padding: 0.6em 1em 0.6em 1.6em;
1367
+ padding: 0.6em 1.4em;
1350
1368
  max-width: 50%;
1351
1369
  min-width: 100px;
1352
1370
  border-radius: var(--vxe-ui-border-radius);
@@ -1358,6 +1376,38 @@
1358
1376
  background-color: var(--vxe-ui-layout-background-color);
1359
1377
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
1360
1378
  z-index: 33;
1379
+ &[drag-status="normal"] {
1380
+ .vxe-table--drag-sort-tip-normal-status {
1381
+ display: block;
1382
+ }
1383
+ }
1384
+ &[drag-status="disabled"] {
1385
+ .vxe-table--drag-sort-tip-disabled-status {
1386
+ display: block;
1387
+ }
1388
+ }
1389
+ }
1390
+ .vxe-table--drag-sort-tip-wrapper {
1391
+ display: flex;
1392
+ flex-direction: row;
1393
+ align-items: center;
1394
+ }
1395
+ .vxe-table--drag-sort-tip-status {
1396
+ padding-right: 0.4em;
1397
+ }
1398
+ .vxe-table--drag-sort-tip-disabled-status {
1399
+ display: none;
1400
+ flex-shrink: 0;
1401
+ color: var(--vxe-ui-status-error-color)
1402
+ }
1403
+ .vxe-table--drag-sort-tip-normal-status {
1404
+ display: none;
1405
+ }
1406
+ .vxe-table--drag-sort-tip-content {
1407
+ flex-grow: 1;
1408
+ overflow: hidden;
1409
+ text-overflow: ellipsis;
1410
+ white-space: nowrap;
1361
1411
  }
1362
1412
 
1363
1413
  /*溢出列*/
Binary file
Binary file
Binary file
@@ -41,4 +41,5 @@
41
41
  --vxe-ui-table-row-current-background-color: #18222c;
42
42
  --vxe-ui-table-row-hover-current-background-color: #262727;
43
43
  --vxe-ui-table-fixed-scrolling-box-shadow-color: rgba(0, 0, 0, 0.8);
44
+ --vxe-ui-table-drag-over-background-color:rgba(48, 48, 0, 0.3);
44
45
  }
@@ -37,4 +37,5 @@
37
37
  --vxe-ui-table-row-current-background-color: #{light_variable.$vxe-ui-table-row-current-background-color};
38
38
  --vxe-ui-table-row-hover-current-background-color: #{light_variable.$vxe-ui-table-row-hover-current-background-color};
39
39
  --vxe-ui-table-fixed-scrolling-box-shadow-color: #{light_variable.$vxe-ui-table-fixed-scrolling-box-shadow-color};
40
+ --vxe-ui-table-drag-over-background-color:#{light_variable.$vxe-ui-table-drag-over-background-color};
40
41
  }
@@ -36,4 +36,5 @@ $vxe-ui-table-row-hover-checkbox-checked-background-color: #ffebbc !default;
36
36
  $vxe-ui-table-row-current-background-color: #e6f7ff !default;
37
37
  $vxe-ui-table-row-hover-current-background-color: #d7effb !default;
38
38
  $vxe-ui-table-fixed-scrolling-box-shadow-color: rgba(0, 0, 0, 0.12) !default;
39
+ $vxe-ui-table-drag-over-background-color:rgba(255,255,200,0.3) !default;
39
40
 
Binary file
Binary file
Binary file
Binary file