vxe-table 4.14.0-beta.1 → 4.14.0-beta.10

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 (203) hide show
  1. package/README.en.md +1 -70
  2. package/README.ja-JP.md +1 -70
  3. package/README.md +9 -18
  4. package/README.zh-TW.md +1 -69
  5. package/es/grid/src/grid.js +30 -21
  6. package/es/index.css +1 -1
  7. package/es/index.esm.js +2 -2
  8. package/es/index.min.css +1 -1
  9. package/es/locale/lang/ar-EG.js +4 -1
  10. package/es/locale/lang/de-DE.js +4 -1
  11. package/es/locale/lang/en-US.js +4 -1
  12. package/es/locale/lang/es-ES.js +4 -1
  13. package/es/locale/lang/fr-FR.js +4 -1
  14. package/es/locale/lang/hu-HU.js +4 -1
  15. package/es/locale/lang/hy-AM.js +4 -1
  16. package/es/locale/lang/id-ID.js +4 -1
  17. package/es/locale/lang/it-IT.js +4 -1
  18. package/es/locale/lang/ja-JP.js +4 -1
  19. package/es/locale/lang/ko-KR.js +4 -1
  20. package/es/locale/lang/ms-MY.js +4 -1
  21. package/es/locale/lang/nb-NO.js +4 -1
  22. package/es/locale/lang/pt-BR.js +4 -1
  23. package/es/locale/lang/ru-RU.js +4 -1
  24. package/es/locale/lang/th-TH.js +4 -1
  25. package/es/locale/lang/ug-CN.js +4 -1
  26. package/es/locale/lang/uk-UA.js +4 -1
  27. package/es/locale/lang/uz-UZ.js +4 -1
  28. package/es/locale/lang/vi-VN.js +4 -1
  29. package/es/locale/lang/zh-CHT.js +4 -1
  30. package/es/locale/lang/zh-CN.js +4 -1
  31. package/es/style.css +1 -1
  32. package/es/style.min.css +1 -1
  33. package/es/table/module/custom/hook.js +0 -4
  34. package/es/table/module/custom/panel.js +0 -1
  35. package/es/table/module/edit/hook.js +31 -1
  36. package/es/table/module/filter/hook.js +1 -1
  37. package/es/table/src/anime.js +46 -0
  38. package/es/table/src/body.js +13 -27
  39. package/es/table/src/cell.js +1 -1
  40. package/es/table/src/columnInfo.js +5 -0
  41. package/es/table/src/footer.js +8 -25
  42. package/es/table/src/header.js +5 -22
  43. package/es/table/src/table.js +609 -381
  44. package/es/table/src/util.js +6 -2
  45. package/es/table/style.css +8 -8
  46. package/es/table/style.min.css +1 -1
  47. package/es/ui/index.js +7 -1
  48. package/es/ui/src/log.js +1 -1
  49. package/es/vxe-table/style.css +8 -8
  50. package/es/vxe-table/style.min.css +1 -1
  51. package/lib/grid/src/grid.js +35 -23
  52. package/lib/grid/src/grid.min.js +1 -1
  53. package/lib/index.common.js +5 -5
  54. package/lib/index.css +1 -1
  55. package/lib/index.min.css +1 -1
  56. package/lib/index.umd.js +211 -153
  57. package/lib/index.umd.min.js +1 -1
  58. package/lib/locale/lang/ar-EG.js +4 -1
  59. package/lib/locale/lang/ar-EG.min.js +1 -1
  60. package/lib/locale/lang/ar-EG.umd.js +4 -1
  61. package/lib/locale/lang/de-DE.js +4 -1
  62. package/lib/locale/lang/de-DE.min.js +1 -1
  63. package/lib/locale/lang/de-DE.umd.js +4 -1
  64. package/lib/locale/lang/en-US.js +4 -1
  65. package/lib/locale/lang/en-US.min.js +1 -1
  66. package/lib/locale/lang/en-US.umd.js +4 -1
  67. package/lib/locale/lang/es-ES.js +4 -1
  68. package/lib/locale/lang/es-ES.min.js +1 -1
  69. package/lib/locale/lang/es-ES.umd.js +4 -1
  70. package/lib/locale/lang/fr-FR.js +4 -1
  71. package/lib/locale/lang/fr-FR.min.js +1 -1
  72. package/lib/locale/lang/fr-FR.umd.js +4 -1
  73. package/lib/locale/lang/hu-HU.js +4 -1
  74. package/lib/locale/lang/hu-HU.min.js +1 -1
  75. package/lib/locale/lang/hu-HU.umd.js +4 -1
  76. package/lib/locale/lang/hy-AM.js +4 -1
  77. package/lib/locale/lang/hy-AM.min.js +1 -1
  78. package/lib/locale/lang/hy-AM.umd.js +4 -1
  79. package/lib/locale/lang/id-ID.js +4 -1
  80. package/lib/locale/lang/id-ID.min.js +1 -1
  81. package/lib/locale/lang/id-ID.umd.js +4 -1
  82. package/lib/locale/lang/it-IT.js +4 -1
  83. package/lib/locale/lang/it-IT.min.js +1 -1
  84. package/lib/locale/lang/it-IT.umd.js +4 -1
  85. package/lib/locale/lang/ja-JP.js +4 -1
  86. package/lib/locale/lang/ja-JP.min.js +1 -1
  87. package/lib/locale/lang/ja-JP.umd.js +4 -1
  88. package/lib/locale/lang/ko-KR.js +4 -1
  89. package/lib/locale/lang/ko-KR.min.js +1 -1
  90. package/lib/locale/lang/ko-KR.umd.js +4 -1
  91. package/lib/locale/lang/ms-MY.js +4 -1
  92. package/lib/locale/lang/ms-MY.min.js +1 -1
  93. package/lib/locale/lang/ms-MY.umd.js +4 -1
  94. package/lib/locale/lang/nb-NO.js +4 -1
  95. package/lib/locale/lang/nb-NO.min.js +1 -1
  96. package/lib/locale/lang/nb-NO.umd.js +4 -1
  97. package/lib/locale/lang/pt-BR.js +4 -1
  98. package/lib/locale/lang/pt-BR.min.js +1 -1
  99. package/lib/locale/lang/pt-BR.umd.js +4 -1
  100. package/lib/locale/lang/ru-RU.js +4 -1
  101. package/lib/locale/lang/ru-RU.min.js +1 -1
  102. package/lib/locale/lang/ru-RU.umd.js +4 -1
  103. package/lib/locale/lang/th-TH.js +4 -1
  104. package/lib/locale/lang/th-TH.min.js +1 -1
  105. package/lib/locale/lang/th-TH.umd.js +4 -1
  106. package/lib/locale/lang/ug-CN.js +4 -1
  107. package/lib/locale/lang/ug-CN.min.js +1 -1
  108. package/lib/locale/lang/ug-CN.umd.js +4 -1
  109. package/lib/locale/lang/uk-UA.js +4 -1
  110. package/lib/locale/lang/uk-UA.min.js +1 -1
  111. package/lib/locale/lang/uk-UA.umd.js +4 -1
  112. package/lib/locale/lang/uz-UZ.js +4 -1
  113. package/lib/locale/lang/uz-UZ.min.js +1 -1
  114. package/lib/locale/lang/uz-UZ.umd.js +4 -1
  115. package/lib/locale/lang/vi-VN.js +4 -1
  116. package/lib/locale/lang/vi-VN.min.js +1 -1
  117. package/lib/locale/lang/vi-VN.umd.js +4 -1
  118. package/lib/locale/lang/zh-CHT.js +4 -1
  119. package/lib/locale/lang/zh-CHT.min.js +1 -1
  120. package/lib/locale/lang/zh-CHT.umd.js +4 -1
  121. package/lib/locale/lang/zh-CN.js +4 -1
  122. package/lib/locale/lang/zh-CN.min.js +1 -1
  123. package/lib/locale/lang/zh-CN.umd.js +4 -1
  124. package/lib/style.css +1 -1
  125. package/lib/style.min.css +1 -1
  126. package/lib/table/module/custom/hook.js +0 -4
  127. package/lib/table/module/custom/hook.min.js +1 -1
  128. package/lib/table/module/custom/panel.js +0 -1
  129. package/lib/table/module/custom/panel.min.js +1 -1
  130. package/lib/table/module/edit/hook.js +30 -1
  131. package/lib/table/module/edit/hook.min.js +1 -1
  132. package/lib/table/module/filter/hook.js +1 -1
  133. package/lib/table/module/filter/hook.min.js +1 -1
  134. package/lib/table/src/anime.js +56 -0
  135. package/lib/table/src/anime.min.js +1 -0
  136. package/lib/table/src/body.js +6 -29
  137. package/lib/table/src/body.min.js +1 -1
  138. package/lib/table/src/cell.js +1 -1
  139. package/lib/table/src/cell.min.js +1 -1
  140. package/lib/table/src/columnInfo.js +5 -0
  141. package/lib/table/src/columnInfo.min.js +1 -1
  142. package/lib/table/src/footer.js +6 -23
  143. package/lib/table/src/footer.min.js +1 -1
  144. package/lib/table/src/header.js +3 -20
  145. package/lib/table/src/header.min.js +1 -1
  146. package/lib/table/src/table.js +56 -45
  147. package/lib/table/src/table.min.js +1 -1
  148. package/lib/table/src/util.js +11 -3
  149. package/lib/table/src/util.min.js +1 -1
  150. package/lib/table/style/style.css +8 -8
  151. package/lib/table/style/style.min.css +1 -1
  152. package/lib/ui/index.js +7 -1
  153. package/lib/ui/index.min.js +1 -1
  154. package/lib/ui/src/log.js +1 -1
  155. package/lib/ui/src/log.min.js +1 -1
  156. package/lib/vxe-table/style/style.css +8 -8
  157. package/lib/vxe-table/style/style.min.css +1 -1
  158. package/package.json +2 -2
  159. package/packages/grid/src/grid.ts +32 -22
  160. package/packages/index.ts +2 -2
  161. package/packages/locale/lang/ar-EG.ts +4 -1
  162. package/packages/locale/lang/de-DE.ts +4 -1
  163. package/packages/locale/lang/en-US.ts +4 -1
  164. package/packages/locale/lang/es-ES.ts +4 -1
  165. package/packages/locale/lang/fr-FR.ts +4 -1
  166. package/packages/locale/lang/hu-HU.ts +4 -1
  167. package/packages/locale/lang/hy-AM.ts +4 -1
  168. package/packages/locale/lang/id-ID.ts +4 -1
  169. package/packages/locale/lang/it-IT.ts +4 -1
  170. package/packages/locale/lang/ja-JP.ts +4 -1
  171. package/packages/locale/lang/ko-KR.ts +4 -1
  172. package/packages/locale/lang/ms-MY.ts +4 -1
  173. package/packages/locale/lang/nb-NO.ts +4 -1
  174. package/packages/locale/lang/pt-BR.ts +4 -1
  175. package/packages/locale/lang/ru-RU.ts +4 -1
  176. package/packages/locale/lang/th-TH.ts +4 -1
  177. package/packages/locale/lang/ug-CN.ts +4 -1
  178. package/packages/locale/lang/uk-UA.ts +4 -1
  179. package/packages/locale/lang/uz-UZ.ts +4 -1
  180. package/packages/locale/lang/vi-VN.ts +4 -1
  181. package/packages/locale/lang/zh-CHT.ts +4 -1
  182. package/packages/locale/lang/zh-CN.ts +4 -1
  183. package/packages/table/module/custom/hook.ts +0 -4
  184. package/packages/table/module/custom/panel.ts +0 -1
  185. package/packages/table/module/edit/hook.ts +29 -1
  186. package/packages/table/module/filter/hook.ts +1 -1
  187. package/packages/table/src/anime.ts +52 -0
  188. package/packages/table/src/body.ts +20 -41
  189. package/packages/table/src/cell.ts +1 -1
  190. package/packages/table/src/columnInfo.ts +5 -0
  191. package/packages/table/src/footer.ts +8 -25
  192. package/packages/table/src/header.ts +5 -22
  193. package/packages/table/src/table.ts +620 -384
  194. package/packages/table/src/util.ts +6 -2
  195. package/packages/ui/index.ts +6 -0
  196. package/styles/components/table.scss +9 -9
  197. package/types/all.d.ts +3 -18
  198. /package/es/{iconfont.1750910518778.ttf → iconfont.1751970630744.ttf} +0 -0
  199. /package/es/{iconfont.1750910518778.woff → iconfont.1751970630744.woff} +0 -0
  200. /package/es/{iconfont.1750910518778.woff2 → iconfont.1751970630744.woff2} +0 -0
  201. /package/lib/{iconfont.1750910518778.ttf → iconfont.1751970630744.ttf} +0 -0
  202. /package/lib/{iconfont.1750910518778.woff → iconfont.1751970630744.woff} +0 -0
  203. /package/lib/{iconfont.1750910518778.woff2 → iconfont.1751970630744.woff2} +0 -0
@@ -36,6 +36,7 @@ export default {
36
36
  notCommands: 'Chỉ thị toàn cầu "{0}" không tồn tại',
37
37
  notSlot: 'Khe "{0}" không tồn tại',
38
38
  noTree: '"{0}" không được hỗ trợ trong cấu trúc cây',
39
+ noGroup: '数据分组后不支持 "{0}"',
39
40
  notProp: 'Tham số không được hỗ trợ "{0}"',
40
41
  checkProp: 'Khi khối lượng dữ liệu quá lớn, hộp kiểm có thể được lắp. Bạn nên đặt tham số "{0}" để cải thiện tốc độ kết xuất',
41
42
  coverProp: 'Tham số "{1}" của "{0}" được xác định nhiều lần, có thể gây ra lỗi',
@@ -336,6 +337,7 @@ export default {
336
337
  overCountErr: 'Chỉ các tệp {0} có thể được chọn nhiều nhất!',
337
338
  overCountExtraErr: 'Số lượng tối đa của {0} đã bị vượt quá và các tệp dư thừa {1} sẽ bị bỏ qua!',
338
339
  overSizeErr: 'Kích thước tệp tối đa không thể vượt quá {0}!',
340
+ manualUpload: '点击上传',
339
341
  reUpload: 'Tải lại lại',
340
342
  uploadProgress: 'Tải lên {0}%',
341
343
  uploadErr: 'Tải lên không thành công',
@@ -354,7 +356,8 @@ export default {
354
356
  colorPicker: {
355
357
  clear: 'Thông thoáng',
356
358
  confirm: 'xác nhận',
357
- copySuccess: 'Được sao chép vào bảng tạm: {0}'
359
+ copySuccess: 'Được sao chép vào bảng tạm: {0}',
360
+ hex: 'HEX'
358
361
  },
359
362
  formDesign: {
360
363
  formName: 'Tên hình thức',
@@ -36,6 +36,7 @@ export default {
36
36
  notCommands: '全局指令 "{0}" 不存在',
37
37
  notSlot: '插槽 "{0}" 不存在',
38
38
  noTree: '樹結構不支持 "{0}"',
39
+ noGroup: '数据分组后不支持 "{0}"',
39
40
  notProp: '不支持的參數 "{0}"',
40
41
  checkProp: '當數據量過大時可能會導致複選框卡頓,建議設置參數 "{0}" 提升渲染速度',
41
42
  coverProp: '"{0}" 的參數 "{1}" 重複定義,這可能會出現錯誤',
@@ -336,6 +337,7 @@ export default {
336
337
  overCountErr: '最多只能選擇{0}個文件!',
337
338
  overCountExtraErr: '已超出最大數量{0}個,超出的{1}個文件將被忽略!',
338
339
  overSizeErr: '文件大小最大不能超過{0}!',
340
+ manualUpload: '点击上传',
339
341
  reUpload: '重新上傳',
340
342
  uploadProgress: '上傳中 {0}%',
341
343
  uploadErr: '上傳失敗',
@@ -354,7 +356,8 @@ export default {
354
356
  colorPicker: {
355
357
  clear: '清除',
356
358
  confirm: '確認',
357
- copySuccess: '已復製到剪貼板:{0}'
359
+ copySuccess: '已復製到剪貼板:{0}',
360
+ hex: '十六进制'
358
361
  },
359
362
  formDesign: {
360
363
  formName: '表單名稱',
@@ -36,6 +36,7 @@ export default {
36
36
  notCommands: '全局指令 "{0}" 不存在',
37
37
  notSlot: '插槽 "{0}" 不存在',
38
38
  noTree: '树结构不支持 "{0}"',
39
+ noGroup: '数据分组后不支持 "{0}"',
39
40
  notProp: '不支持的参数 "{0}"',
40
41
  checkProp: '当数据量过大时可能会导致复选框卡顿,建议设置参数 "{0}" 提升渲染速度',
41
42
  coverProp: '"{0}" 的参数 "{1}" 重复定义,这可能会出现错误',
@@ -336,6 +337,7 @@ export default {
336
337
  overCountErr: '最多只能选择{0}个文件!',
337
338
  overCountExtraErr: '已超出最大数量{0}个,超出的{1}个文件将被忽略!',
338
339
  overSizeErr: '文件大小最大不能超过{0}!',
340
+ manualUpload: '点击上传',
339
341
  reUpload: '重新上传',
340
342
  uploadProgress: '上传中 {0}%',
341
343
  uploadErr: '上传失败',
@@ -354,7 +356,8 @@ export default {
354
356
  colorPicker: {
355
357
  clear: '清除',
356
358
  confirm: '确认',
357
- copySuccess: '已复制到剪贴板:{0}'
359
+ copySuccess: '已复制到剪贴板:{0}',
360
+ hex: '十六进制'
358
361
  },
359
362
  formDesign: {
360
363
  formName: '表单名称',
@@ -111,10 +111,6 @@ VxeUI.hooks.add('tableCustomModule', {
111
111
  }
112
112
  })
113
113
  reactData.isCustomStatus = true
114
- reactData.isDragColMove = true
115
- setTimeout(() => {
116
- reactData.isDragColMove = false
117
- }, 1000)
118
114
  return $xeTable.saveCustomStore('confirm').then(() => {
119
115
  if (allowGroup && allowValues && ($xeTable as any).handlePivotTableAggregateData) {
120
116
  if (rowGroupList.length !== aggHandleFields.length || rowGroupList.some((conf, i) => conf.field !== aggHandleFields[i])) {
@@ -475,7 +475,6 @@ export default defineVxeComponent({
475
475
  customColumnList.splice(nafIndex + dragOffsetIndex, 0, dragColumn)
476
476
  }
477
477
 
478
- tableReactData.isDragColMove = true
479
478
  if (mouseConfig) {
480
479
  if ($xeTable.clearSelected) {
481
480
  $xeTable.clearSelected()
@@ -104,8 +104,13 @@ hooks.add('tableEditModule', {
104
104
  })
105
105
  }
106
106
 
107
+ // const insertGroupRow = (newRecords: any[], isAppend: boolean) => {
108
+
109
+ // }
110
+
107
111
  const handleInsertRowAt = (records: any, targetRow: any, isInsertNextRow?: boolean) => {
108
112
  const { treeConfig } = props
113
+ const { isRowGroupStatus } = reactData
109
114
  const { tableFullTreeData, afterFullData, mergeBodyList, tableFullData, fullDataRowIdData, fullAllDataRowIdData, insertRowMaps } = internalData
110
115
  const treeOpts = computeTreeOpts.value
111
116
  const { transform, rowField, mapChildrenField } = treeOpts
@@ -118,6 +123,13 @@ hooks.add('tableEditModule', {
118
123
  // 如果为虚拟树
119
124
  if (treeConfig && transform) {
120
125
  insertTreeRow(newRecords, false)
126
+ } else if (isRowGroupStatus) {
127
+ // 如果分组
128
+ if (treeConfig) {
129
+ throw new Error(getI18n('vxe.error.noTree', ['insert']))
130
+ }
131
+ warnLog(getI18n('vxe.error.noGroup', ['remove']))
132
+ // insertGroupRow(newRecords, false)
121
133
  } else {
122
134
  newRecords.forEach(item => {
123
135
  const rowid = getRowid($xeTable, item)
@@ -140,6 +152,13 @@ hooks.add('tableEditModule', {
140
152
  // 如果为虚拟树
141
153
  if (treeConfig && transform) {
142
154
  insertTreeRow(newRecords, true)
155
+ } else if (isRowGroupStatus) {
156
+ // 如果分组
157
+ if (treeConfig) {
158
+ throw new Error(getI18n('vxe.error.noTree', ['insert']))
159
+ }
160
+ warnLog(getI18n('vxe.error.noGroup', ['remove']))
161
+ // insertGroupRow(newRecords, true)
143
162
  } else {
144
163
  newRecords.forEach(item => {
145
164
  const rowid = getRowid($xeTable, item)
@@ -202,6 +221,12 @@ hooks.add('tableEditModule', {
202
221
  warnLog('vxe.error.unableInsert')
203
222
  insertTreeRow(newRecords, true)
204
223
  }
224
+ } else if (isRowGroupStatus) {
225
+ // 如果分组
226
+ if (treeConfig) {
227
+ throw new Error(getI18n('vxe.error.noTree', ['insert']))
228
+ }
229
+ warnLog(getI18n('vxe.error.noGroup', ['remove']))
205
230
  } else {
206
231
  if (treeConfig) {
207
232
  throw new Error(getI18n('vxe.error.noTree', ['insert']))
@@ -488,7 +513,7 @@ hooks.add('tableEditModule', {
488
513
  */
489
514
  remove (rows: any) {
490
515
  const { treeConfig } = props
491
- const { editStore } = reactData
516
+ const { editStore, isRowGroupStatus } = reactData
492
517
  const { tableFullTreeData, selectCheckboxMaps, afterFullData, mergeBodyList, tableFullData, pendingRowMaps, insertRowMaps, removeRowMaps } = internalData
493
518
  const checkboxOpts = computeCheckboxOpts.value
494
519
  const treeOpts = computeTreeOpts.value
@@ -544,6 +569,9 @@ hooks.add('tableEditModule', {
544
569
  afterFullData.splice(afIndex, 1)
545
570
  }
546
571
  })
572
+ } else if (isRowGroupStatus) {
573
+ // 如果分组
574
+ warnLog(getI18n('vxe.error.noGroup', ['remove']))
547
575
  } else {
548
576
  rows.forEach((row: any) => {
549
577
  const tfIndex = $xeTable.findRowIndexOf(tableFullData, row)
@@ -9,7 +9,7 @@ import type { TableFilterMethods, TableFilterPrivateMethods } from '../../../../
9
9
 
10
10
  const { renderer, hooks } = VxeUI
11
11
 
12
- const tableFilterMethodKeys: (keyof TableFilterMethods)[] = ['openFilter', 'setFilter', 'clearFilter', 'saveFilterPanel', 'resetFilterPanel', 'getCheckedFilters', 'updateFilterOptionStatus']
12
+ const tableFilterMethodKeys: (keyof TableFilterMethods)[] = ['openFilter', 'setFilter', 'clearFilter', 'saveFilterPanel', 'saveFilterPanelByEvent', 'resetFilterPanel', 'resetFilterPanelByEvent', 'getCheckedFilters', 'updateFilterOptionStatus']
13
13
 
14
14
  hooks.add('tableFilterModule', {
15
15
  setupTable ($xeTable) {
@@ -0,0 +1,52 @@
1
+
2
+ import XEUtils from 'xe-utils'
3
+ import { addClass, removeClass } from '../../ui/src/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) {
24
+ setTimeout(() => {
25
+ if (elem) {
26
+ XEUtils.arrayEach(elem.querySelectorAll(`.vxe-body--row.${rowMoveCls}`), 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) {
47
+ setTimeout(() => {
48
+ if (elem) {
49
+ XEUtils.arrayEach(elem.querySelectorAll(`.vxe-table--column.${colMoveClass}`), elem => removeClass(elem, colMoveClass))
50
+ }
51
+ }, 500)
52
+ }
@@ -1,4 +1,4 @@
1
- import { TransitionGroup, h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
1
+ import { h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
@@ -28,7 +28,7 @@ export default defineVxeComponent({
28
28
  const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTablePrivateMethods)
29
29
 
30
30
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable
31
- const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts } = $xeTable.getComputeMaps()
31
+ const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts } = $xeTable.getComputeMaps()
32
32
 
33
33
  const refElem = ref() as Ref<HTMLDivElement>
34
34
  const refBodyScroll = ref() as Ref<HTMLDivElement>
@@ -47,7 +47,7 @@ export default defineVxeComponent({
47
47
  }
48
48
 
49
49
  const renderLine = (rowid: string, params: VxeTableDefines.CellRenderBodyParams, cellHeight: number): VxeComponentSlotType[] => {
50
- const { row, column } = params
50
+ const { column } = params
51
51
  const { afterFullData } = tableInternalData
52
52
  const { treeConfig } = tableProps
53
53
  const treeOpts = computeTreeOpts.value
@@ -72,7 +72,7 @@ export default defineVxeComponent({
72
72
  h('div', {
73
73
  class: 'vxe-tree--line',
74
74
  style: {
75
- height: `${$xeTable.eqRow(afterFullData[0], row) ? 1 : calcTreeLine(params, prevRow)}px`,
75
+ height: `${getRowid($xeTable, afterFullData[0]) === rowid ? 1 : calcTreeLine(params, prevRow)}px`,
76
76
  bottom: `-${Math.floor(cellHeight / 2)}px`,
77
77
  left: `${(rLevel * treeOpts.indent) + (rLevel ? 2 - getOffsetSize($xeTable) : 0) + 16}px`
78
78
  }
@@ -330,6 +330,8 @@ export default defineVxeComponent({
330
330
  tcStyle.minHeight = `${cellHeight}px`
331
331
  }
332
332
 
333
+ // console.log(lastScrollTime)
334
+
333
335
  const tdVNs: VxeComponentSlotType[] = []
334
336
  if (fixedHiddenColumn && isAllOverflow) {
335
337
  tdVNs.push(
@@ -364,7 +366,7 @@ export default defineVxeComponent({
364
366
  h('div', {
365
367
  colid,
366
368
  rowid,
367
- class: 'vxe-cell--wrapper'
369
+ class: 'vxe-cell--wrapper vxe-body-cell--wrapper'
368
370
  }, column.renderCell(cellParams))
369
371
  ])
370
372
  )
@@ -434,7 +436,7 @@ export default defineVxeComponent({
434
436
 
435
437
  return h('td', {
436
438
  class: [
437
- 'vxe-body--column',
439
+ 'vxe-table--column vxe-body--column',
438
440
  colid,
439
441
  cellVerticalAlign ? `col--vertical-${cellVerticalAlign}` : '',
440
442
  cellAlign ? `col--${cellAlign}` : '',
@@ -474,7 +476,7 @@ export default defineVxeComponent({
474
476
  const $xeGrid = $xeTable.xeGrid
475
477
 
476
478
  const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps
477
- const { hasFixedColumn, treeExpandedFlag, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, isDragColMove, rowExpandHeightFlag, isRowGroupStatus } = tableReactData
479
+ const { hasFixedColumn, treeExpandedFlag, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, rowExpandHeightFlag, isRowGroupStatus } = tableReactData
478
480
  const { fullAllDataRowIdData, fullColumnIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData
479
481
  const checkboxOpts = computeCheckboxOpts.value
480
482
  const radioOpts = computeRadioOpts.value
@@ -482,7 +484,6 @@ export default defineVxeComponent({
482
484
  const editOpts = computeEditOpts.value
483
485
  const rowOpts = computeRowOpts.value
484
486
  const columnOpts = computeColumnOpts.value
485
- const columnDragOpts = computeColumnDragOpts.value
486
487
  const { transform, seqMode } = treeOpts
487
488
  const childrenField = treeOpts.children || treeOpts.childrenField
488
489
  const rows: any[] = []
@@ -562,25 +563,13 @@ export default defineVxeComponent({
562
563
  return renderTdColumn(seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData)
563
564
  })
564
565
  rows.push(
565
- !isColLoading && (columnOpts.drag && columnDragOpts.animation)
566
- ? h(TransitionGroup, {
567
- name: `vxe-header--col-list${isDragColMove ? '' : '-disabled'}`,
568
- tag: 'tr',
569
- class: trClass,
570
- rowid: rowid,
571
- style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : null,
572
- key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
573
- ...trOn
574
- }, {
575
- default: () => tdVNs
576
- })
577
- : h('tr', {
578
- class: trClass,
579
- rowid: rowid,
580
- style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : null,
581
- key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
582
- ...trOn
583
- }, tdVNs)
566
+ h('tr', {
567
+ class: trClass,
568
+ rowid: rowid,
569
+ style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : null,
570
+ key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
571
+ ...trOn
572
+ }, tdVNs)
584
573
  )
585
574
  // 如果行被展开了
586
575
  if (isExpandRow) {
@@ -715,12 +704,10 @@ export default defineVxeComponent({
715
704
 
716
705
  const { fixedColumn, fixedType, tableColumn } = props
717
706
  const { spanMethod, footerSpanMethod, mouseConfig } = tableProps
718
- const { isGroup, tableData, isRowLoading, isColLoading, overflowX, scrollXLoad, scrollYLoad, isAllOverflow, isDragRowMove, expandColumn, dragRow, dragCol } = tableReactData
707
+ const { isGroup, tableData, isColLoading, overflowX, scrollXLoad, scrollYLoad, isAllOverflow, expandColumn, dragRow, dragCol } = tableReactData
719
708
  const { visibleColumn, fullAllDataRowIdData, fullColumnIdData } = tableInternalData
720
- const rowOpts = computeRowOpts.value
721
709
  const emptyOpts = computeEmptyOpts.value
722
710
  const mouseOpts = computeMouseOpts.value
723
- const rowDragOpts = computeRowDragOpts.value
724
711
  const expandOpts = computeExpandOpts.value
725
712
 
726
713
  let renderDataList = tableData
@@ -860,17 +847,9 @@ export default defineVxeComponent({
860
847
  /**
861
848
  * 内容
862
849
  */
863
- !(isRowLoading || isColLoading) && (rowOpts.drag && rowDragOpts.animation)
864
- ? h(TransitionGroup, {
865
- ref: refBodyTBody,
866
- name: `vxe-body--row-list${isDragRowMove ? '' : '-disabled'}`,
867
- tag: 'tbody'
868
- }, {
869
- default: () => renderRows(fixedType, isOptimizeMode, renderDataList, renderColumnList)
870
- })
871
- : h('tbody', {
872
- ref: refBodyTBody
873
- }, renderRows(fixedType, isOptimizeMode, renderDataList, renderColumnList))
850
+ h('tbody', {
851
+ ref: refBodyTBody
852
+ }, renderRows(fixedType, isOptimizeMode, renderDataList, renderColumnList))
874
853
  ]),
875
854
  h('div', {
876
855
  class: 'vxe-table--checkbox-range'
@@ -189,7 +189,7 @@ function renderTitleContent (params: VxeTableDefines.CellRenderHeaderParams & {
189
189
  const { showHeaderOverflow } = column
190
190
  const tooltipOpts = computeTooltipOpts.value
191
191
  const showAllTip = tooltipOpts.showAll
192
- const headOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
192
+ const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
193
193
  const showTitle = headOverflow === 'title'
194
194
  const showTooltip = headOverflow === true || headOverflow === 'tooltip'
195
195
  const ons: Record<string, any> = {}
@@ -47,6 +47,11 @@ export class ColumnInfo {
47
47
  }
48
48
  }
49
49
  }
50
+ if (_vm.aggFunc) {
51
+ if (!$xeTable.handlePivotTableAggregateData && _vm.aggFunc !== true) {
52
+ errLog('vxe.error.errProp', [`column.agg-func=${_vm.aggFunc}`, 'column.agg-func=true'])
53
+ }
54
+ }
50
55
 
51
56
  Object.assign(this, {
52
57
  // 基本属性
@@ -1,9 +1,9 @@
1
- import { TransitionGroup, h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
1
+ import { h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
5
5
  import { updateCellTitle, getPropClass } from '../../ui/src/dom'
6
- import { getCellHeight } from './util'
6
+ import { getCalcHeight } from './util'
7
7
 
8
8
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines } from '../../../types'
9
9
 
@@ -35,7 +35,7 @@ export default defineVxeComponent({
35
35
  const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
36
36
 
37
37
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable
38
- const { computeTooltipOpts, computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps()
38
+ const { computeTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps()
39
39
 
40
40
  const refElem = ref() as Ref<HTMLDivElement>
41
41
  const refFooterScroll = ref() as Ref<HTMLDivElement>
@@ -49,7 +49,7 @@ export default defineVxeComponent({
49
49
 
50
50
  const { fixedType } = props
51
51
  const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps
52
- const { scrollXLoad, scrollYLoad, overflowX, currentColumn } = tableReactData
52
+ const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFootFlag } = tableReactData
53
53
  const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData
54
54
  const virtualXOpts = computeVirtualXOpts.value
55
55
  const tooltipOpts = computeTooltipOpts.value
@@ -59,7 +59,7 @@ export default defineVxeComponent({
59
59
  const defaultRowHeight = computeDefaultRowHeight.value
60
60
  const cellOpts = computeCellOpts.value
61
61
  const footerCellOpts = computeFooterCellOpts.value
62
- const currCellHeight = getCellHeight(footerCellOpts.height) || defaultRowHeight
62
+ const currCellHeight = getCalcHeight(footerCellOpts.height) || defaultRowHeight
63
63
 
64
64
  return tableColumn.map((column, $columnIndex) => {
65
65
  const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column
@@ -126,7 +126,7 @@ export default defineVxeComponent({
126
126
  }
127
127
  let isMergeCell = false
128
128
  // 合并行或列
129
- if (mergeFooterList.length) {
129
+ if (mergeFootFlag && mergeFooterList.length) {
130
130
  const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`]
131
131
  if (spanRest) {
132
132
  const { rowspan, colspan } = spanRest
@@ -173,7 +173,7 @@ export default defineVxeComponent({
173
173
  }
174
174
 
175
175
  return h('td', {
176
- class: ['vxe-footer--column', column.id, {
176
+ class: ['vxe-table--column vxe-footer--column', column.id, {
177
177
  [`col--${footAlign}`]: footAlign,
178
178
  [`col--${type}`]: type,
179
179
  'col--last': isLastColumn,
@@ -200,7 +200,7 @@ export default defineVxeComponent({
200
200
  : [
201
201
  h('div', {
202
202
  colid,
203
- class: 'vxe-cell--wrapper'
203
+ class: 'vxe-cell--wrapper vxe-footer-cell--wrapper'
204
204
  }, column.renderFooter(cellParams))
205
205
  ]),
206
206
  /**
@@ -222,28 +222,11 @@ export default defineVxeComponent({
222
222
  const renderHeads = (isOptimizeMode: boolean, renderColumnList: VxeTableDefines.ColumnInfo[]) => {
223
223
  const { fixedType, footerTableData } = props
224
224
  const { footerRowClassName, footerRowStyle } = tableProps
225
- const { isColLoading, isDragColMove } = tableReactData
226
- const columnOpts = computeColumnOpts.value
227
- const columnDragOpts = computeColumnDragOpts.value
228
225
 
229
226
  return footerTableData.map((row, $rowIndex) => {
230
227
  const _rowIndex = $rowIndex
231
228
  const rowParams = { $table: $xeTable, row, _rowIndex, $rowIndex, fixed: fixedType, type: renderType }
232
229
 
233
- if (!isColLoading && columnOpts.drag && columnDragOpts.animation) {
234
- return h(TransitionGroup, {
235
- key: $rowIndex,
236
- name: `vxe-header--col-list${isDragColMove ? '' : '-disabled'}`,
237
- tag: 'tr',
238
- class: [
239
- 'vxe-footer--row',
240
- footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
241
- ],
242
- style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
243
- }, {
244
- default: () => renderRows(isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex)
245
- })
246
- }
247
230
  return h('tr', {
248
231
  key: $rowIndex,
249
232
  class: [
@@ -1,8 +1,8 @@
1
- import { TransitionGroup, h, ref, Ref, PropType, inject, nextTick, watch, onMounted, onUnmounted } from 'vue'
1
+ import { h, ref, Ref, PropType, inject, nextTick, watch, onMounted, onUnmounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
5
- import { getCellHeight, convertHeaderColumnToRows } from './util'
5
+ import { getCalcHeight, convertHeaderColumnToRows } from './util'
6
6
 
7
7
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines, VxeColumnPropTypes } from '../../../types'
8
8
 
@@ -56,7 +56,7 @@ export default defineVxeComponent({
56
56
  const cellOpts = computeCellOpts.value
57
57
  const defaultRowHeight = computeDefaultRowHeight.value
58
58
  const headerCellOpts = computeHeaderCellOpts.value
59
- const currCellHeight = getCellHeight(headerCellOpts.height) || defaultRowHeight
59
+ const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight
60
60
  const { disabledMethod: dragDisabledMethod, isCrossDrag, isPeerDrag } = columnDragOpts
61
61
 
62
62
  return cols.map((column, $columnIndex) => {
@@ -146,7 +146,7 @@ export default defineVxeComponent({
146
146
  }
147
147
 
148
148
  return h('th', {
149
- class: ['vxe-header--column', colid, {
149
+ class: ['vxe-table--column vxe-header--column', colid, {
150
150
  [`col--${headAlign}`]: headAlign,
151
151
  [`col--${type}`]: type,
152
152
  'col--last': isLastColumn,
@@ -183,7 +183,7 @@ export default defineVxeComponent({
183
183
  : [
184
184
  h('div', {
185
185
  colid,
186
- class: 'vxe-cell--wrapper'
186
+ class: 'vxe-cell--wrapper vxe-header-cell--wrapper'
187
187
  }, column.renderHeader(cellParams))
188
188
  ]),
189
189
  /**
@@ -203,27 +203,10 @@ export default defineVxeComponent({
203
203
  const renderHeads = (isGroup: boolean, isOptimizeMode: boolean, headerGroups: VxeTableDefines.ColumnInfo[][]) => {
204
204
  const { fixedType } = props
205
205
  const { headerRowClassName, headerRowStyle } = tableProps
206
- const { isColLoading, isDragColMove } = tableReactData
207
- const columnOpts = computeColumnOpts.value
208
- const columnDragOpts = computeColumnDragOpts.value
209
206
 
210
207
  return headerGroups.map((cols, $rowIndex) => {
211
208
  const params = { $table: $xeTable, $rowIndex, fixed: fixedType, type: renderType }
212
209
 
213
- if (!isColLoading && columnOpts.drag && columnDragOpts.animation) {
214
- return h(TransitionGroup, {
215
- key: $rowIndex,
216
- name: `vxe-header--col-list${isDragColMove ? '' : '-disabled'}`,
217
- tag: 'tr',
218
- class: [
219
- 'vxe-header--row',
220
- headerRowClassName ? (XEUtils.isFunction(headerRowClassName) ? headerRowClassName(params) : headerRowClassName) : ''
221
- ],
222
- style: headerRowStyle ? (XEUtils.isFunction(headerRowStyle) ? headerRowStyle(params) : headerRowStyle) : null
223
- }, {
224
- default: () => renderRows(isGroup, isOptimizeMode, cols, $rowIndex)
225
- })
226
- }
227
210
  return h('tr', {
228
211
  key: $rowIndex,
229
212
  class: [