vxe-table 3.11.21 → 3.11.23

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 (154) hide show
  1. package/es/{iconfont.1733469864818.ttf → iconfont.1733805838288.ttf} +0 -0
  2. package/es/iconfont.1733805838288.woff +0 -0
  3. package/es/iconfont.1733805838288.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/render/index.js +26 -6
  28. package/es/table/src/body.js +2 -2
  29. package/es/table/src/cell.js +7 -2
  30. package/es/table/src/header.js +1 -1
  31. package/es/table/src/methods.js +195 -48
  32. package/es/table/src/table.js +31 -4
  33. package/es/table/style.css +62 -4
  34. package/es/table/style.min.css +1 -1
  35. package/es/ui/index.js +4 -1
  36. package/es/ui/src/log.js +1 -1
  37. package/es/vxe-table/style.css +62 -4
  38. package/es/vxe-table/style.min.css +1 -1
  39. package/lib/{iconfont.1733469864818.ttf → iconfont.1733805838288.ttf} +0 -0
  40. package/lib/iconfont.1733805838288.woff +0 -0
  41. package/lib/iconfont.1733805838288.woff2 +0 -0
  42. package/lib/index.css +1 -1
  43. package/lib/index.min.css +1 -1
  44. package/lib/index.umd.js +369 -106
  45. package/lib/index.umd.min.js +1 -1
  46. package/lib/locale/lang/ar-EG.js +2 -0
  47. package/lib/locale/lang/ar-EG.min.js +1 -1
  48. package/lib/locale/lang/de-DE.js +2 -0
  49. package/lib/locale/lang/de-DE.min.js +1 -1
  50. package/lib/locale/lang/en-US.js +3 -1
  51. package/lib/locale/lang/en-US.min.js +1 -1
  52. package/lib/locale/lang/en-US.umd.js +3 -1
  53. package/lib/locale/lang/es-ES.js +2 -0
  54. package/lib/locale/lang/es-ES.min.js +1 -1
  55. package/lib/locale/lang/es-ES.umd.js +2 -0
  56. package/lib/locale/lang/fr-FR.js +2 -0
  57. package/lib/locale/lang/fr-FR.min.js +1 -1
  58. package/lib/locale/lang/hu-HU.js +2 -0
  59. package/lib/locale/lang/hu-HU.min.js +1 -1
  60. package/lib/locale/lang/hu-HU.umd.js +2 -0
  61. package/lib/locale/lang/hy-AM.js +2 -0
  62. package/lib/locale/lang/hy-AM.min.js +1 -1
  63. package/lib/locale/lang/ja-JP.js +2 -0
  64. package/lib/locale/lang/ja-JP.min.js +1 -1
  65. package/lib/locale/lang/ja-JP.umd.js +2 -0
  66. package/lib/locale/lang/ko-KR.js +2 -0
  67. package/lib/locale/lang/ko-KR.min.js +1 -1
  68. package/lib/locale/lang/ko-KR.umd.js +2 -0
  69. package/lib/locale/lang/nb-NO.js +2 -0
  70. package/lib/locale/lang/nb-NO.min.js +1 -1
  71. package/lib/locale/lang/pt-BR.js +2 -0
  72. package/lib/locale/lang/pt-BR.min.js +1 -1
  73. package/lib/locale/lang/pt-BR.umd.js +2 -0
  74. package/lib/locale/lang/ru-RU.js +2 -0
  75. package/lib/locale/lang/ru-RU.min.js +1 -1
  76. package/lib/locale/lang/ru-RU.umd.js +2 -0
  77. package/lib/locale/lang/ug-CN.js +2 -0
  78. package/lib/locale/lang/ug-CN.min.js +1 -1
  79. package/lib/locale/lang/uk-UA.js +2 -0
  80. package/lib/locale/lang/uk-UA.min.js +1 -1
  81. package/lib/locale/lang/uk-UA.umd.js +2 -0
  82. package/lib/locale/lang/vi-VN.js +2 -0
  83. package/lib/locale/lang/vi-VN.min.js +1 -1
  84. package/lib/locale/lang/zh-CHT.js +2 -0
  85. package/lib/locale/lang/zh-CHT.min.js +1 -1
  86. package/lib/locale/lang/zh-CHT.umd.js +2 -0
  87. package/lib/locale/lang/zh-CN.js +2 -0
  88. package/lib/locale/lang/zh-CN.min.js +1 -1
  89. package/lib/locale/lang/zh-CN.umd.js +2 -0
  90. package/lib/style.css +1 -1
  91. package/lib/style.min.css +1 -1
  92. package/lib/table/module/custom/mixin.js +8 -3
  93. package/lib/table/module/custom/mixin.min.js +1 -1
  94. package/lib/table/module/custom/panel.js +49 -37
  95. package/lib/table/module/custom/panel.min.js +1 -1
  96. package/lib/table/render/index.js +38 -6
  97. package/lib/table/render/index.min.js +1 -1
  98. package/lib/table/src/body.js +2 -2
  99. package/lib/table/src/body.min.js +1 -1
  100. package/lib/table/src/cell.js +6 -1
  101. package/lib/table/src/cell.min.js +1 -1
  102. package/lib/table/src/header.js +1 -1
  103. package/lib/table/src/header.min.js +1 -1
  104. package/lib/table/src/methods.js +232 -51
  105. package/lib/table/src/methods.min.js +1 -1
  106. package/lib/table/src/table.js +25 -3
  107. package/lib/table/src/table.min.js +1 -1
  108. package/lib/table/style/style.css +62 -4
  109. package/lib/table/style/style.min.css +1 -1
  110. package/lib/ui/index.js +4 -1
  111. package/lib/ui/index.min.js +1 -1
  112. package/lib/ui/src/log.js +1 -1
  113. package/lib/ui/src/log.min.js +1 -1
  114. package/lib/vxe-table/style/style.css +62 -4
  115. package/lib/vxe-table/style/style.min.css +1 -1
  116. package/package.json +2 -2
  117. package/packages/locale/lang/ar-EG.ts +2 -0
  118. package/packages/locale/lang/de-DE.ts +2 -0
  119. package/packages/locale/lang/en-US.ts +3 -1
  120. package/packages/locale/lang/es-ES.ts +2 -0
  121. package/packages/locale/lang/fr-FR.ts +2 -0
  122. package/packages/locale/lang/hu-HU.ts +2 -0
  123. package/packages/locale/lang/hy-AM.ts +2 -0
  124. package/packages/locale/lang/ja-JP.ts +2 -0
  125. package/packages/locale/lang/ko-KR.ts +2 -0
  126. package/packages/locale/lang/nb-NO.ts +2 -0
  127. package/packages/locale/lang/pt-BR.ts +2 -0
  128. package/packages/locale/lang/ru-RU.ts +2 -0
  129. package/packages/locale/lang/ug-CN.ts +2 -0
  130. package/packages/locale/lang/uk-UA.ts +2 -0
  131. package/packages/locale/lang/vi-VN.ts +2 -0
  132. package/packages/locale/lang/zh-CHT.ts +2 -0
  133. package/packages/locale/lang/zh-CN.ts +2 -0
  134. package/packages/table/module/custom/mixin.ts +9 -3
  135. package/packages/table/module/custom/panel.ts +48 -27
  136. package/packages/table/render/index.ts +24 -5
  137. package/packages/table/src/body.ts +2 -2
  138. package/packages/table/src/cell.ts +8 -2
  139. package/packages/table/src/header.ts +1 -1
  140. package/packages/table/src/methods.ts +209 -50
  141. package/packages/table/src/table.ts +34 -4
  142. package/packages/ui/index.ts +3 -0
  143. package/styles/components/icon.scss +13 -1
  144. package/styles/components/table.scss +53 -3
  145. package/styles/icon/iconfont.ttf +0 -0
  146. package/styles/icon/iconfont.woff +0 -0
  147. package/styles/icon/iconfont.woff2 +0 -0
  148. package/styles/theme/dark.scss +1 -0
  149. package/styles/theme/light.scss +1 -0
  150. package/styles/variable.scss +1 -0
  151. package/es/iconfont.1733469864818.woff +0 -0
  152. package/es/iconfont.1733469864818.woff2 +0 -0
  153. package/lib/iconfont.1733469864818.woff +0 -0
  154. 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
  /**
@@ -4668,13 +4717,30 @@ const Methods = {
4668
4717
  this.emitEvent('radio-change', { oldValue, newValue, ...params }, evnt)
4669
4718
  }
4670
4719
  },
4720
+ triggerCurrentColumnEvent (evnt: any, params: any) {
4721
+ const $xeTable = this
4722
+
4723
+ const columnOpts = $xeTable.computeColumnOpts
4724
+ const { currentMethod } = columnOpts
4725
+ const { column } = params
4726
+ if (!currentMethod || currentMethod({ column })) {
4727
+ $xeTable.setCurrentColumn(column)
4728
+ }
4729
+ },
4671
4730
  triggerCurrentRowEvent (evnt: any, params: any) {
4672
- const { currentRow: oldValue } = this
4731
+ const $xeTable = this
4732
+ const reactData = $xeTable
4733
+
4734
+ const { currentRow: oldValue } = reactData
4735
+ const rowOpts = $xeTable.computeRowOpts
4736
+ const { currentMethod } = rowOpts
4673
4737
  const { row: newValue } = params
4674
4738
  const isChange = oldValue !== newValue
4675
- this.setCurrentRow(newValue)
4676
- if (isChange) {
4677
- this.emitEvent('current-change', { oldValue, newValue, ...params }, evnt)
4739
+ if (!currentMethod || currentMethod({ row: newValue })) {
4740
+ $xeTable.setCurrentRow(newValue)
4741
+ if (isChange) {
4742
+ $xeTable.dispatchEvent('current-change', { oldValue, newValue, ...params }, evnt)
4743
+ }
4678
4744
  }
4679
4745
  },
4680
4746
  /**
@@ -4790,7 +4856,7 @@ const Methods = {
4790
4856
  }
4791
4857
  this.emitEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt)
4792
4858
  if (this.columnOpts.isCurrent || this.highlightCurrentColumn) {
4793
- return this.setCurrentColumn(column)
4859
+ this.triggerCurrentColumnEvent(evnt, params)
4794
4860
  }
4795
4861
  return this.$nextTick()
4796
4862
  },
@@ -4998,11 +5064,13 @@ const Methods = {
4998
5064
 
4999
5065
  const { treeConfig, dragConfig } = props
5000
5066
  const rowDragOpts = $xeTable.computeRowDragOpts
5001
- const { dragEndMethod } = rowDragOpts
5067
+ const { fullAllDataRowIdData } = internalData
5068
+ const { isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts
5002
5069
  const treeOpts = $xeTable.computeTreeOpts
5003
- const { transform } = treeOpts
5070
+ const { transform, mapChildrenField, parentField } = treeOpts
5071
+ const childrenField = treeOpts.children || treeOpts.childrenField
5004
5072
  const { dragRow } = reactData
5005
- const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData
5073
+ const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
5006
5074
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
5007
5075
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
5008
5076
  if (prevDragRow && dragRow) {
@@ -5024,27 +5092,105 @@ const Methods = {
5024
5092
 
5025
5093
  let oafIndex = -1
5026
5094
  let nafIndex = -1
5095
+ // 如果为树结构
5027
5096
  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)
5097
+ if (transform) {
5098
+ // 移出源位置
5099
+ const oldRowid = getRowid($xeTable, dragRow)
5100
+ const oldRest = fullAllDataRowIdData[oldRowid]
5101
+ const newRowid = getRowid($xeTable, prevDragRow)
5102
+ const newRest = fullAllDataRowIdData[newRowid]
5103
+ if (oldRest && newRest) {
5104
+ const { level: oldLevel } = oldRest
5105
+ const { level: newLevel } = newRest
5106
+
5107
+ const oldAllMaps: Record<string, any> = {}
5108
+ XEUtils.eachTree([dragRow], item => {
5109
+ oldAllMaps[getRowid($xeTable, item)] = item
5110
+ }, { children: mapChildrenField })
5111
+
5112
+ let isSelfToChildStatus = false
5113
+
5114
+ if (oldLevel && newLevel) {
5115
+ // 子到子
5116
+
5117
+ if (!isCrossDrag) {
5118
+ return
5119
+ }
5120
+ if (oldAllMaps[newRowid]) {
5121
+ if (!isSelfToChildDrag) {
5122
+ isSelfToChildStatus = true
5123
+ if (VxeUI.modal) {
5124
+ VxeUI.modal.message({
5125
+ status: 'error',
5126
+ content: getI18n('vxe.error.treeDragChild')
5127
+ })
5128
+ }
5129
+ return
5130
+ }
5131
+ }
5132
+ } else if (oldLevel) {
5133
+ // 子到根
5134
+
5135
+ if (!isCrossDrag) {
5136
+ return
5137
+ }
5138
+ } else if (newLevel) {
5139
+ // 根到子
5140
+
5141
+ if (!isCrossDrag) {
5142
+ return
5143
+ }
5144
+ if (oldAllMaps[newRowid]) {
5145
+ isSelfToChildStatus = true
5146
+ if (!isSelfToChildDrag) {
5147
+ if (VxeUI.modal) {
5148
+ VxeUI.modal.message({
5149
+ status: 'error',
5150
+ content: getI18n('vxe.error.treeDragChild')
5151
+ })
5152
+ }
5153
+ return
5154
+ }
5155
+ }
5156
+ } else {
5157
+ // 根到根
5158
+ }
5159
+
5160
+ const fullList = XEUtils.toTreeArray(internalData.afterTreeFullData, { children: childrenField })
5161
+
5162
+ // 移出
5163
+ const otfIndex = $xeTable.findRowIndexOf(fullList, dragRow)
5164
+ fullList.splice(otfIndex, 1)
5165
+
5166
+ // 插入
5167
+ const ptfIndex = $xeTable.findRowIndexOf(fullList, prevDragRow)
5168
+ const ntfIndex = ptfIndex + dragOffsetIndex
5169
+ fullList.splice(ntfIndex, 0, dragRow)
5170
+
5171
+ // 改变层级
5172
+ if (isSelfToChildStatus && isSelfToChildDrag) {
5173
+ XEUtils.each(dragRow[childrenField], childRow => {
5174
+ childRow[parentField] = dragRow[parentField]
5175
+ })
5176
+ }
5177
+ dragRow[parentField] = prevDragRow[parentField]
5178
+
5179
+ internalData.tableFullTreeData = XEUtils.toArrayTree(fullList, {
5180
+ key: treeOpts.rowField,
5181
+ parentKey: treeOpts.parentField,
5182
+ children: childrenField,
5183
+ mapChildren: treeOpts.mapChildrenField
5184
+ })
5185
+ }
5186
+ }
5041
5187
  } else {
5042
- // 移出源位置
5188
+ // 移出
5043
5189
  oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
5044
5190
  const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
5045
5191
  afterFullData.splice(oafIndex, 1)
5046
5192
  tableFullData.splice(otfIndex, 1)
5047
- // 插新位置
5193
+ // 插入
5048
5194
  const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
5049
5195
  const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
5050
5196
  nafIndex = pafIndex + dragOffsetIndex
@@ -5054,9 +5200,9 @@ const Methods = {
5054
5200
  }
5055
5201
 
5056
5202
  reactData.isDragRowMove = true
5057
- $xeTable.cacheRowMap()
5058
- $xeTable.updateScrollYStatus()
5059
5203
  $xeTable.handleTableData(treeConfig && transform)
5204
+ $xeTable.cacheRowMap(true)
5205
+ $xeTable.updateScrollYStatus()
5060
5206
  if (!(treeConfig && transform)) {
5061
5207
  $xeTable.updateAfterDataIndex()
5062
5208
  }
@@ -5072,7 +5218,7 @@ const Methods = {
5072
5218
  $xeTable.dispatchEvent('row-dragend', {
5073
5219
  oldRow: dragRow,
5074
5220
  newRow: prevDragRow,
5075
- dragPos: prevDragPos,
5221
+ dragPos: prevDragPos as any,
5076
5222
  offsetIndex: dragOffsetIndex,
5077
5223
  _index: {
5078
5224
  newIndex: nafIndex,
@@ -5093,26 +5239,35 @@ const Methods = {
5093
5239
  },
5094
5240
  handleRowDragDragoverEvent (evnt: DragEvent) {
5095
5241
  const $xeTable = this
5242
+ const props = $xeTable
5096
5243
  const internalData = $xeTable
5097
5244
  const reactData = $xeTable
5098
5245
 
5246
+ const { treeConfig } = props
5247
+ const { fullAllDataRowIdData } = internalData
5099
5248
  const { dragRow } = reactData
5249
+ const rowDragOpts = $xeTable.computeRowDragOpts
5250
+ const { isCrossDrag } = rowDragOpts
5100
5251
  if (!dragRow) {
5101
5252
  evnt.preventDefault()
5102
5253
  return
5103
5254
  }
5104
5255
  const trEl = evnt.currentTarget as HTMLElement
5105
- const rowid = trEl.getAttribute('rowid')
5106
- const row = $xeTable.getRowById(rowid)
5107
- if (row) {
5108
- evnt.preventDefault()
5256
+ const rowid = trEl.getAttribute('rowid') || ''
5257
+ const rest = fullAllDataRowIdData[rowid]
5258
+ if (rest) {
5259
+ const row = rest.row
5109
5260
  evnt.preventDefault()
5110
5261
  const { dragRow } = reactData
5111
5262
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
5112
5263
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
5264
+ if ($xeTable.eqRow(dragRow, row) || (!isCrossDrag && treeConfig && rest.level)) {
5265
+ showDropTip($xeTable, evnt, trEl, null, false, dragPos)
5266
+ return
5267
+ }
5113
5268
  internalData.prevDragRow = row
5114
5269
  internalData.prevDragPos = dragPos
5115
- showDropTip($xeTable, evnt, trEl, null, dragPos)
5270
+ showDropTip($xeTable, evnt, trEl, null, true, dragPos)
5116
5271
  $xeTable.dispatchEvent('row-dragover', {
5117
5272
  oldRow: dragRow,
5118
5273
  targetRow: row,
@@ -5276,9 +5431,13 @@ const Methods = {
5276
5431
  const { dragCol } = reactData
5277
5432
  const offsetX = evnt.clientX - thEl.getBoundingClientRect().x
5278
5433
  const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right'
5434
+ if (dragCol.id === column.id || column.parentId) {
5435
+ showDropTip($xeTable, evnt, null, thEl, false, dragPos)
5436
+ return
5437
+ }
5279
5438
  internalData.prevDragCol = column
5280
5439
  internalData.prevDragPos = dragPos
5281
- showDropTip($xeTable, evnt, null, thEl, dragPos)
5440
+ showDropTip($xeTable, evnt, null, thEl, true, dragPos)
5282
5441
  $xeTable.dispatchEvent('column-dragover', {
5283
5442
  oldColumn: dragCol,
5284
5443
  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