vxe-table 4.13.5 → 4.13.7

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 (174) hide show
  1. package/es/grid/src/grid.js +1 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/locale/lang/ar-EG.js +3 -2
  5. package/es/locale/lang/de-DE.js +3 -2
  6. package/es/locale/lang/en-US.js +2 -1
  7. package/es/locale/lang/es-ES.js +3 -2
  8. package/es/locale/lang/fr-FR.js +2 -1
  9. package/es/locale/lang/hu-HU.js +2 -1
  10. package/es/locale/lang/hy-AM.js +2 -1
  11. package/es/locale/lang/id-ID.js +2 -1
  12. package/es/locale/lang/it-IT.js +2 -1
  13. package/es/locale/lang/ja-JP.js +2 -1
  14. package/es/locale/lang/ko-KR.js +2 -1
  15. package/es/locale/lang/nb-NO.js +2 -1
  16. package/es/locale/lang/pt-BR.js +2 -1
  17. package/es/locale/lang/ru-RU.js +2 -1
  18. package/es/locale/lang/th-TH.js +2 -1
  19. package/es/locale/lang/ug-CN.js +2 -1
  20. package/es/locale/lang/uk-UA.js +2 -1
  21. package/es/locale/lang/vi-VN.js +2 -1
  22. package/es/locale/lang/zh-CHT.js +2 -1
  23. package/es/locale/lang/zh-CN.js +2 -1
  24. package/es/style.css +1 -1
  25. package/es/style.min.css +1 -1
  26. package/es/table/module/custom/hook.js +11 -8
  27. package/es/table/module/custom/panel.js +7 -7
  28. package/es/table/module/export/hook.js +21 -20
  29. package/es/table/module/keyboard/hook.js +3 -2
  30. package/es/table/src/body.js +45 -10
  31. package/es/table/src/cell.js +159 -69
  32. package/es/table/src/column.js +2 -0
  33. package/es/table/src/columnInfo.js +1 -0
  34. package/es/table/src/emits.js +1 -0
  35. package/es/table/src/props.js +9 -7
  36. package/es/table/src/table.js +659 -171
  37. package/es/table/style.css +70 -40
  38. package/es/table/style.min.css +1 -1
  39. package/es/ui/index.js +13 -1
  40. package/es/ui/src/dom.js +3 -0
  41. package/es/ui/src/log.js +1 -1
  42. package/es/vxe-table/style.css +70 -40
  43. package/es/vxe-table/style.min.css +1 -1
  44. package/lib/grid/src/grid.js +1 -1
  45. package/lib/grid/src/grid.min.js +1 -1
  46. package/lib/index.css +1 -1
  47. package/lib/index.min.css +1 -1
  48. package/lib/index.umd.js +419 -179
  49. package/lib/index.umd.min.js +1 -1
  50. package/lib/locale/lang/ar-EG.js +3 -2
  51. package/lib/locale/lang/ar-EG.min.js +1 -1
  52. package/lib/locale/lang/de-DE.js +3 -2
  53. package/lib/locale/lang/de-DE.min.js +1 -1
  54. package/lib/locale/lang/en-US.js +2 -1
  55. package/lib/locale/lang/en-US.min.js +1 -1
  56. package/lib/locale/lang/en-US.umd.js +2 -1
  57. package/lib/locale/lang/es-ES.js +3 -2
  58. package/lib/locale/lang/es-ES.min.js +1 -1
  59. package/lib/locale/lang/es-ES.umd.js +3 -2
  60. package/lib/locale/lang/fr-FR.js +2 -1
  61. package/lib/locale/lang/fr-FR.min.js +1 -1
  62. package/lib/locale/lang/hu-HU.js +2 -1
  63. package/lib/locale/lang/hu-HU.min.js +1 -1
  64. package/lib/locale/lang/hu-HU.umd.js +2 -1
  65. package/lib/locale/lang/hy-AM.js +2 -1
  66. package/lib/locale/lang/hy-AM.min.js +1 -1
  67. package/lib/locale/lang/id-ID.js +2 -1
  68. package/lib/locale/lang/id-ID.min.js +1 -1
  69. package/lib/locale/lang/it-IT.js +2 -1
  70. package/lib/locale/lang/it-IT.min.js +1 -1
  71. package/lib/locale/lang/ja-JP.js +2 -1
  72. package/lib/locale/lang/ja-JP.min.js +1 -1
  73. package/lib/locale/lang/ja-JP.umd.js +2 -1
  74. package/lib/locale/lang/ko-KR.js +2 -1
  75. package/lib/locale/lang/ko-KR.min.js +1 -1
  76. package/lib/locale/lang/ko-KR.umd.js +2 -1
  77. package/lib/locale/lang/nb-NO.js +2 -1
  78. package/lib/locale/lang/nb-NO.min.js +1 -1
  79. package/lib/locale/lang/pt-BR.js +2 -1
  80. package/lib/locale/lang/pt-BR.min.js +1 -1
  81. package/lib/locale/lang/pt-BR.umd.js +2 -1
  82. package/lib/locale/lang/ru-RU.js +2 -1
  83. package/lib/locale/lang/ru-RU.min.js +1 -1
  84. package/lib/locale/lang/ru-RU.umd.js +2 -1
  85. package/lib/locale/lang/th-TH.js +2 -1
  86. package/lib/locale/lang/th-TH.min.js +1 -1
  87. package/lib/locale/lang/ug-CN.js +2 -1
  88. package/lib/locale/lang/ug-CN.min.js +1 -1
  89. package/lib/locale/lang/uk-UA.js +2 -1
  90. package/lib/locale/lang/uk-UA.min.js +1 -1
  91. package/lib/locale/lang/uk-UA.umd.js +2 -1
  92. package/lib/locale/lang/vi-VN.js +2 -1
  93. package/lib/locale/lang/vi-VN.min.js +1 -1
  94. package/lib/locale/lang/zh-CHT.js +2 -1
  95. package/lib/locale/lang/zh-CHT.min.js +1 -1
  96. package/lib/locale/lang/zh-CN.js +2 -1
  97. package/lib/locale/lang/zh-CN.min.js +1 -1
  98. package/lib/locale/lang/zh-CN.umd.js +2 -1
  99. package/lib/style.css +1 -1
  100. package/lib/style.min.css +1 -1
  101. package/lib/table/module/custom/hook.js +11 -1
  102. package/lib/table/module/custom/hook.min.js +1 -1
  103. package/lib/table/module/custom/panel.js +6 -2
  104. package/lib/table/module/custom/panel.min.js +1 -1
  105. package/lib/table/module/export/hook.js +21 -11
  106. package/lib/table/module/export/hook.min.js +1 -1
  107. package/lib/table/module/keyboard/hook.js +2 -1
  108. package/lib/table/module/keyboard/hook.min.js +1 -1
  109. package/lib/table/src/body.js +35 -9
  110. package/lib/table/src/body.min.js +1 -1
  111. package/lib/table/src/cell.js +177 -52
  112. package/lib/table/src/cell.min.js +1 -1
  113. package/lib/table/src/column.js +2 -0
  114. package/lib/table/src/column.min.js +1 -1
  115. package/lib/table/src/columnInfo.js +1 -0
  116. package/lib/table/src/columnInfo.min.js +1 -1
  117. package/lib/table/src/emits.js +1 -1
  118. package/lib/table/src/emits.min.js +1 -1
  119. package/lib/table/src/props.js +9 -7
  120. package/lib/table/src/props.min.js +1 -1
  121. package/lib/table/src/table.js +134 -91
  122. package/lib/table/src/table.min.js +1 -1
  123. package/lib/table/style/style.css +70 -40
  124. package/lib/table/style/style.min.css +1 -1
  125. package/lib/ui/index.js +13 -1
  126. package/lib/ui/index.min.js +1 -1
  127. package/lib/ui/src/dom.js +4 -0
  128. package/lib/ui/src/dom.min.js +1 -1
  129. package/lib/ui/src/log.js +1 -1
  130. package/lib/ui/src/log.min.js +1 -1
  131. package/lib/vxe-table/style/style.css +70 -40
  132. package/lib/vxe-table/style/style.min.css +1 -1
  133. package/package.json +2 -2
  134. package/packages/grid/src/grid.ts +1 -1
  135. package/packages/locale/lang/ar-EG.ts +3 -2
  136. package/packages/locale/lang/de-DE.ts +3 -2
  137. package/packages/locale/lang/en-US.ts +2 -1
  138. package/packages/locale/lang/es-ES.ts +3 -2
  139. package/packages/locale/lang/fr-FR.ts +2 -1
  140. package/packages/locale/lang/hu-HU.ts +2 -1
  141. package/packages/locale/lang/hy-AM.ts +2 -1
  142. package/packages/locale/lang/id-ID.ts +2 -1
  143. package/packages/locale/lang/it-IT.ts +2 -1
  144. package/packages/locale/lang/ja-JP.ts +2 -1
  145. package/packages/locale/lang/ko-KR.ts +2 -1
  146. package/packages/locale/lang/nb-NO.ts +2 -1
  147. package/packages/locale/lang/pt-BR.ts +2 -1
  148. package/packages/locale/lang/ru-RU.ts +2 -1
  149. package/packages/locale/lang/th-TH.ts +2 -1
  150. package/packages/locale/lang/ug-CN.ts +2 -1
  151. package/packages/locale/lang/uk-UA.ts +2 -1
  152. package/packages/locale/lang/vi-VN.ts +2 -1
  153. package/packages/locale/lang/zh-CHT.ts +2 -1
  154. package/packages/locale/lang/zh-CN.ts +2 -1
  155. package/packages/table/module/custom/hook.ts +14 -8
  156. package/packages/table/module/custom/panel.ts +7 -7
  157. package/packages/table/module/export/hook.ts +28 -27
  158. package/packages/table/module/keyboard/hook.ts +3 -2
  159. package/packages/table/src/body.ts +46 -10
  160. package/packages/table/src/cell.ts +162 -73
  161. package/packages/table/src/column.ts +2 -0
  162. package/packages/table/src/columnInfo.ts +1 -0
  163. package/packages/table/src/emits.ts +1 -0
  164. package/packages/table/src/props.ts +9 -7
  165. package/packages/table/src/table.ts +664 -176
  166. package/packages/ui/index.ts +12 -0
  167. package/packages/ui/src/dom.ts +4 -0
  168. package/styles/components/table.scss +131 -92
  169. /package/es/{iconfont.1744880866629.ttf → iconfont.1745290253213.ttf} +0 -0
  170. /package/es/{iconfont.1744880866629.woff → iconfont.1745290253213.woff} +0 -0
  171. /package/es/{iconfont.1744880866629.woff2 → iconfont.1745290253213.woff2} +0 -0
  172. /package/lib/{iconfont.1744880866629.ttf → iconfont.1745290253213.ttf} +0 -0
  173. /package/lib/{iconfont.1744880866629.woff → iconfont.1745290253213.woff} +0 -0
  174. /package/lib/{iconfont.1744880866629.woff2 → iconfont.1745290253213.woff2} +0 -0
@@ -80,8 +80,9 @@ export default {
80
80
  customRestore: 'Restore',
81
81
  maxFixedCol: 'The maximum number of Freeze columns cannot exceed {0}',
82
82
  dragTip: 'Moving: {0}',
83
- resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
83
+ resizeColTip: 'Width:{0} Pixels',
84
+ resizeRowTip: 'Height:{0} Pixels',
85
+ rowGroupContentTotal: '{0} ({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '¡Seleccione al menos un registro!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'Le nombre maximum de colonnes gelées ne peut pas dépasser {0}',
82
82
  dragTip: 'Déplacer : {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'A rögzített oszlopok maximális száma nem haladhatja meg a következőt: {0}',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'Kérjük, válasszon legalább egy rekordot!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大冻结列的数量不能超过 {0} 个',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大冻结列的数量不能超过 {0} 个',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'Il numero massimo di colonne bloccate non può superare {0}',
82
82
  dragTip: 'Sposta: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'Seleziona almeno un record!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大固定列数が {0} です。',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '1つ以上のレコードを選択してください',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '최대 고정 열 수는 {0}을(를) 초과할 수 없습니다.',
82
82
  dragTip: '이동: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '최소한 하나의 레코드를 선택해주세요!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'Maksimalt antall frosne kolonner kan ikke overstige {0}',
82
82
  dragTip: 'Flytt: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'The maximum number of Freeze columns cannot exceed {0}',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'Por favor, selecione pelo menos um registro!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'Максимальное количество замороженных столбцов не может превышать {0}.',
82
82
  dragTip: 'Переместить: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'Пожалуйста, выберите хотя бы одну запись!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'จำนวนคอลัมน์ที่ตรึงไว้สูงสุดต้องไม่เกิน {0}',
82
82
  dragTip: 'ย้าย: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'โปรดเลือกอย่างน้อยหนึ่งรายการ!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'توڭلىتىشقا بولىدىغان ئەڭ چوڭ قۇر سانى {0} دانە',
82
82
  dragTip: 'يۆتكەش:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'كەم بولغاندا بىر تال ئۇچۇر تاللاڭ',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: 'Максимальна кількість зафіксованих стовпців не повинна перевищувати {0}',
82
82
  dragTip: 'Переміщення: {0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: 'Будь ласка, виберіть хоча б один запис!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大冻结列的数量不能超过 {0} 个',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大凍結列的數量不能超過 {0} 個',
82
82
  dragTip: '移動:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '請至少選擇一筆記錄!',
@@ -81,7 +81,8 @@ export default {
81
81
  maxFixedCol: '最大冻结列的数量不能超过 {0} 个',
82
82
  dragTip: '移动:{0}',
83
83
  resizeColTip: '宽:{0} 像素',
84
- resizeRowTip: '高:{0} 像素'
84
+ resizeRowTip: '高:{0} 像素',
85
+ rowGroupContentTotal: '{0}({1})'
85
86
  },
86
87
  grid: {
87
88
  selectOneRecord: '请至少选择一条记录!',
@@ -142,10 +142,10 @@ VxeUI.hooks.add('tableCustomModule', {
142
142
  const isAll = !!checked
143
143
  if (customOpts.immediate) {
144
144
  XEUtils.eachTree(customColumnList, (column) => {
145
- if (visibleMethod && !visibleMethod({ column })) {
145
+ if (visibleMethod && !visibleMethod({ $table: $xeTable, column })) {
146
146
  return
147
147
  }
148
- if (checkMethod && !checkMethod({ column })) {
148
+ if (checkMethod && !checkMethod({ $table: $xeTable, column })) {
149
149
  return
150
150
  }
151
151
  column.visible = isAll
@@ -158,10 +158,10 @@ VxeUI.hooks.add('tableCustomModule', {
158
158
  $xeTable.saveCustomStore('update:visible')
159
159
  } else {
160
160
  XEUtils.eachTree(customColumnList, (column) => {
161
- if (visibleMethod && !visibleMethod({ column })) {
161
+ if (visibleMethod && !visibleMethod({ $table: $xeTable, column })) {
162
162
  return
163
163
  }
164
- if (checkMethod && !checkMethod({ column })) {
164
+ if (checkMethod && !checkMethod({ $table: $xeTable, column })) {
165
165
  return
166
166
  }
167
167
  column.renderVisible = isAll
@@ -198,7 +198,7 @@ VxeUI.hooks.add('tableCustomModule', {
198
198
  if (opts.sort) {
199
199
  column.renderSortNumber = column.sortNumber
200
200
  }
201
- if (!checkMethod || checkMethod({ column })) {
201
+ if (!checkMethod || checkMethod({ $table: $xeTable, column })) {
202
202
  column.visible = column.defaultVisible
203
203
  }
204
204
  column.renderResizeWidth = column.renderWidth
@@ -220,8 +220,8 @@ VxeUI.hooks.add('tableCustomModule', {
220
220
  const { collectColumn } = internalData
221
221
  const customOpts = computeCustomOpts.value
222
222
  const { checkMethod } = customOpts
223
- customStore.isAll = collectColumn.every((column) => (checkMethod ? !checkMethod({ column }) : false) || column.renderVisible)
224
- customStore.isIndeterminate = !customStore.isAll && collectColumn.some((column) => (!checkMethod || checkMethod({ column })) && (column.renderVisible || column.halfVisible))
223
+ customStore.isAll = collectColumn.every((column) => (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false) || column.renderVisible)
224
+ customStore.isIndeterminate = !customStore.isAll && collectColumn.some((column) => (!checkMethod || checkMethod({ $table: $xeTable, column })) && (column.renderVisible || column.halfVisible))
225
225
  }
226
226
 
227
227
  const emitCustomEvent = (type: VxeTableDefines.CustomType, evnt: Event) => {
@@ -233,7 +233,9 @@ VxeUI.hooks.add('tableCustomModule', {
233
233
  checkCustomStatus,
234
234
  emitCustomEvent,
235
235
  triggerCustomEvent (evnt) {
236
- const { customStore } = $xeTable.reactData
236
+ const reactData = $xeTable.reactData
237
+
238
+ const { customStore } = reactData
237
239
  if (customStore.visible) {
238
240
  closeCustom()
239
241
  emitCustomEvent('close', evnt)
@@ -244,6 +246,8 @@ VxeUI.hooks.add('tableCustomModule', {
244
246
  }
245
247
  },
246
248
  customOpenEvent (evnt) {
249
+ const reactData = $xeTable.reactData
250
+
247
251
  const { customStore } = reactData
248
252
  if (!customStore.visible) {
249
253
  customStore.activeBtn = true
@@ -253,6 +257,8 @@ VxeUI.hooks.add('tableCustomModule', {
253
257
  }
254
258
  },
255
259
  customCloseEvent (evnt) {
260
+ const reactData = $xeTable.reactData
261
+
256
262
  const { customStore } = reactData
257
263
  if (customStore.visible) {
258
264
  customStore.activeBtn = false
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, h, inject, ref, Ref, VNode, PropType, nextTick, TransitionGroup, createCommentVNode } from 'vue'
2
2
  import { VxeUI } from '../../../ui'
3
3
  import { formatText } from '../../../ui/src/utils'
4
- import { getTpImg, addClass, removeClass } from '../../../ui/src/dom'
4
+ import { getTpImg, addClass, removeClass, hasControlKey } from '../../../ui/src/dom'
5
5
  import { errLog } from '../../../ui/src/log'
6
6
  import XEUtils from 'xe-utils'
7
7
 
@@ -444,7 +444,7 @@ export default defineComponent({
444
444
  const columnDragOpts = computeColumnDragOpts.value
445
445
  const { isCrossDrag, isToChildDrag } = columnDragOpts
446
446
  const optEl = evnt.currentTarget as HTMLElement
447
- const hasCtrlKey = evnt.ctrlKey
447
+ const isControlKey = hasControlKey(evnt)
448
448
  const colid = optEl.getAttribute('colid')
449
449
  const column = $xeTable.getColumnById(colid)
450
450
  const dragCol = dragColumnRef.value
@@ -462,7 +462,7 @@ export default defineComponent({
462
462
  showDropTip(evnt, optEl, false, dragPos)
463
463
  return
464
464
  }
465
- prevDragToChild = !!((isCrossDrag && isToChildDrag) && hasCtrlKey && immediate)
465
+ prevDragToChild = !!((isCrossDrag && isToChildDrag) && isControlKey && immediate)
466
466
  prevDragCol = column
467
467
  prevDragPos = dragPos
468
468
  showDropTip(evnt, optEl, true, dragPos)
@@ -543,13 +543,13 @@ export default defineComponent({
543
543
  isCustomStatus
544
544
  }
545
545
  XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => {
546
- const isVisible = visibleMethod ? visibleMethod({ column }) : true
546
+ const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true
547
547
  if (isVisible) {
548
548
  const isChecked = column.renderVisible
549
549
  const isIndeterminate = column.halfVisible
550
550
  const isColGroup = column.children && column.children.length
551
551
  const colTitle = formatText(column.getTitle(), 1)
552
- const isDisabled = checkMethod ? !checkMethod({ column }) : false
552
+ const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false
553
553
  const isHidden = !isChecked
554
554
  colVNs.push(
555
555
  h('li', {
@@ -811,7 +811,7 @@ export default defineComponent({
811
811
  isCustomStatus
812
812
  }
813
813
  XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => {
814
- const isVisible = visibleMethod ? visibleMethod({ column }) : true
814
+ const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true
815
815
  if (isVisible) {
816
816
  // 默认继承调整宽度
817
817
  let customMinWidth = 0
@@ -836,7 +836,7 @@ export default defineComponent({
836
836
  const isIndeterminate = column.halfVisible
837
837
  const colTitle = formatText(column.getTitle(), 1)
838
838
  const isColGroup = column.children && column.children.length
839
- const isDisabled = checkMethod ? !checkMethod({ column }) : false
839
+ const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false
840
840
  const isHidden = !isChecked
841
841
  trVNs.push(
842
842
  h('tr', {
@@ -7,7 +7,7 @@ import { hasClass } from '../../../ui/src/dom'
7
7
  import { createHtmlPage, getExportBlobByContent } from './util'
8
8
  import { warnLog, errLog } from '../../../ui/src/log'
9
9
 
10
- import type { VxeGridConstructor, VxeGridPrivateMethods, VxeTablePropTypes, VxeColumnPropTypes, TableExportMethods, VxeGridPropTypes, VxeTableDefines } from '../../../../types'
10
+ import type { VxeGridConstructor, VxeGridPrivateMethods, VxeTablePropTypes, VxeColumnPropTypes, TableExportMethods, VxeGridPropTypes, VxeTableDefines, VxeTableConstructor, VxeTablePrivateMethods } from '../../../../types'
11
11
 
12
12
  const { getI18n, hooks, renderer } = VxeUI
13
13
 
@@ -92,9 +92,9 @@ function getBooleanValue (cellValue: any) {
92
92
  return cellValue === 'TRUE' || cellValue === 'true' || cellValue === true
93
93
  }
94
94
 
95
- function getFooterData (opts: VxeTablePropTypes.ExportHandleOptions, footerTableData: any[]) {
95
+ function getFooterData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: VxeTablePropTypes.ExportHandleOptions, footerTableData: any[]) {
96
96
  const { footerFilterMethod } = opts
97
- return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({ items, $rowIndex: index })) : footerTableData
97
+ return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({ $table: $xeTable, items, $rowIndex: index })) : footerTableData
98
98
  }
99
99
 
100
100
  function getCsvCellTypeLabel (column: any, cellValue: any) {
@@ -309,11 +309,12 @@ hooks.add('tableExportModule', {
309
309
  return row[childrenField] && row[childrenField].length
310
310
  }
311
311
 
312
- const getSeq = (cellValue: any, row: any, $rowIndex: any, column: any, $columnIndex: any) => {
312
+ const getSeq = (cellValue: any, row: any, $rowIndex: number, column: VxeTableDefines.ColumnInfo, $columnIndex: number) => {
313
313
  const seqOpts = computeSeqOpts.value
314
- const seqMethod = seqOpts.seqMethod || column.seqMethod
314
+ const seqMethod = seqOpts.seqMethod || (column as any).seqMethod
315
315
  if (seqMethod) {
316
316
  return seqMethod({
317
+ $table: $xeTable,
317
318
  row,
318
319
  rowIndex: $xeTable.getRowIndex(row),
319
320
  $rowIndex,
@@ -325,7 +326,7 @@ hooks.add('tableExportModule', {
325
326
  return cellValue
326
327
  }
327
328
 
328
- function getHeaderTitle (opts: any, column: any) {
329
+ function getHeaderTitle (opts: VxeTablePropTypes.ExportHandleOptions, column: VxeTableDefines.ColumnInfo) {
329
330
  const columnOpts = computeColumnOpts.value
330
331
  const headExportMethod = column.headerExportMethod || columnOpts.headerExportMethod
331
332
  return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : ((opts.isTitle ? column.getTitle() : column.field) || '')
@@ -390,12 +391,12 @@ hooks.add('tableExportModule', {
390
391
  case 'checkbox':
391
392
  cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row))
392
393
  item._checkboxLabel = checkboxOpts.labelField ? XEUtils.get(row, checkboxOpts.labelField) : ''
393
- item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ row })
394
+ item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row })
394
395
  break
395
396
  case 'radio':
396
397
  cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row))
397
398
  item._radioLabel = radioOpts.labelField ? XEUtils.get(row, radioOpts.labelField) : ''
398
- item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ row })
399
+ item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row })
399
400
  break
400
401
  default:
401
402
  if (opts.original) {
@@ -448,12 +449,12 @@ hooks.add('tableExportModule', {
448
449
  case 'checkbox':
449
450
  cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row))
450
451
  item._checkboxLabel = checkboxOpts.labelField ? XEUtils.get(row, checkboxOpts.labelField) : ''
451
- item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ row })
452
+ item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row })
452
453
  break
453
454
  case 'radio':
454
455
  cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row))
455
456
  item._radioLabel = radioOpts.labelField ? XEUtils.get(row, radioOpts.labelField) : ''
456
- item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ row })
457
+ item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row })
457
458
  break
458
459
  default:
459
460
  if (opts.original) {
@@ -478,19 +479,19 @@ hooks.add('tableExportModule', {
478
479
  })
479
480
  }
480
481
 
481
- const getExportData = (opts: any) => {
482
+ const getExportData = (opts: VxeTablePropTypes.ExportHandleOptions) => {
482
483
  const { columns, dataFilterMethod } = opts
483
484
  let datas = opts.data
484
485
  if (dataFilterMethod) {
485
- datas = datas.filter((row: any, index: any) => dataFilterMethod({ row, $rowIndex: index }))
486
+ datas = datas.filter((row, index) => dataFilterMethod({ $table: $xeTable, row, $rowIndex: index }))
486
487
  }
487
488
  return getBodyLabelData(opts, columns, datas)
488
489
  }
489
490
 
490
- const getFooterCellValue = (opts: any, row: any, column: any) => {
491
+ const getFooterCellValue = (opts: VxeTablePropTypes.ExportHandleOptions, row: any, column: VxeTableDefines.ColumnInfo) => {
491
492
  const columnOpts = computeColumnOpts.value
492
493
  const renderOpts = column.editRender || column.cellRender
493
- let footLabelMethod = column.footerExportMethod
494
+ let footLabelMethod: VxeColumnPropTypes.FooterExportMethod | undefined = column.footerExportMethod
494
495
  if (!footLabelMethod && renderOpts && renderOpts.name) {
495
496
  const compConf = renderer.get(renderOpts.name)
496
497
  if (compConf) {
@@ -511,7 +512,7 @@ hooks.add('tableExportModule', {
511
512
  return XEUtils.get(row, column.field)
512
513
  }
513
514
 
514
- const toCsv = (opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
515
+ const toCsv = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
515
516
  let content = csvBOM
516
517
  if (opts.isHeader) {
517
518
  content += columns.map((column) => toTxtCellLabel(getHeaderTitle(opts, column))).join(',') + enterSymbol
@@ -521,7 +522,7 @@ hooks.add('tableExportModule', {
521
522
  })
522
523
  if (opts.isFooter) {
523
524
  const { footerTableData } = reactData
524
- const footers = getFooterData(opts, footerTableData)
525
+ const footers = getFooterData($xeTable, opts, footerTableData)
525
526
  footers.forEach((row) => {
526
527
  content += columns.map((column: any) => toTxtCellLabel(getFooterCellValue(opts, row, column))).join(',') + enterSymbol
527
528
  })
@@ -529,7 +530,7 @@ hooks.add('tableExportModule', {
529
530
  return content
530
531
  }
531
532
 
532
- const toTxt = (opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
533
+ const toTxt = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
533
534
  let content = ''
534
535
  if (opts.isHeader) {
535
536
  content += columns.map((column) => toTxtCellLabel(getHeaderTitle(opts, column))).join('\t') + enterSymbol
@@ -539,7 +540,7 @@ hooks.add('tableExportModule', {
539
540
  })
540
541
  if (opts.isFooter) {
541
542
  const { footerTableData } = reactData
542
- const footers = getFooterData(opts, footerTableData)
543
+ const footers = getFooterData($xeTable, opts, footerTableData)
543
544
  footers.forEach((row) => {
544
545
  content += columns.map((column: any) => toTxtCellLabel(getFooterCellValue(opts, row, column))).join('\t') + enterSymbol
545
546
  })
@@ -703,7 +704,7 @@ hooks.add('tableExportModule', {
703
704
  }
704
705
  if (isFooter) {
705
706
  const { footerTableData } = reactData
706
- const footers = getFooterData(opts, footerTableData)
707
+ const footers = getFooterData($xeTable, opts, footerTableData)
707
708
  if (footers.length) {
708
709
  tables.push('<tfoot>')
709
710
  footers.forEach((row: any) => {
@@ -756,7 +757,7 @@ hooks.add('tableExportModule', {
756
757
  })
757
758
  if (opts.isFooter) {
758
759
  const { footerTableData } = reactData
759
- const footers = getFooterData(opts, footerTableData)
760
+ const footers = getFooterData($xeTable, opts, footerTableData)
760
761
  footers.forEach((row: any) => {
761
762
  xml += `<Row>${columns.map((column: any) => `<Cell><Data ss:Type="String">${getFooterCellValue(opts, row, column)}</Data></Cell>`).join('')}</Row>`
762
763
  })
@@ -764,13 +765,13 @@ hooks.add('tableExportModule', {
764
765
  return `${xml}</Table></Worksheet></Workbook>`
765
766
  }
766
767
 
767
- const getContent = (opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
768
+ const getContent = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: VxeTablePropTypes.ExportHandleOptions, columns: VxeTableDefines.ColumnInfo[], datas: any[]) => {
768
769
  if (columns.length) {
769
770
  switch (opts.type) {
770
771
  case 'csv':
771
- return toCsv(opts, columns, datas)
772
+ return toCsv($xeTable, opts, columns, datas)
772
773
  case 'txt':
773
- return toTxt(opts, columns, datas)
774
+ return toTxt($xeTable, opts, columns, datas)
774
775
  case 'html':
775
776
  return toHtml(opts, columns, datas)
776
777
  case 'xml':
@@ -807,7 +808,7 @@ hooks.add('tableExportModule', {
807
808
  const datas = getExportData(opts)
808
809
  resolve(
809
810
  $xeTable.preventEvent(null, 'event.export', { options: opts, columns, colgroups, datas }, () => {
810
- return downloadFile(opts, getContent(opts, columns, datas))
811
+ return downloadFile(opts, getContent($xeTable, opts, columns, datas))
811
812
  })
812
813
  )
813
814
  }
@@ -1073,7 +1074,7 @@ hooks.add('tableExportModule', {
1073
1074
  }
1074
1075
  column.checked = isChecked
1075
1076
  column.halfChecked = false
1076
- column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ column }) : false)
1077
+ column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false)
1077
1078
  })
1078
1079
  // 更新条件
1079
1080
  Object.assign(exportStore, {
@@ -1239,7 +1240,7 @@ hooks.add('tableExportModule', {
1239
1240
  children: 'childNodes',
1240
1241
  mapChildren: '_children'
1241
1242
  }),
1242
- (column, index) => isColumnInfo(column) && (!columnFilterMethod || columnFilterMethod({ column: column as any, $columnIndex: index })),
1243
+ (column, index) => isColumnInfo(column) && (!columnFilterMethod || columnFilterMethod({ $table: $xeTable, column: column as any, $columnIndex: index })),
1243
1244
  {
1244
1245
  children: '_children',
1245
1246
  mapChildren: 'childNodes',
@@ -1247,7 +1248,7 @@ hooks.add('tableExportModule', {
1247
1248
  }
1248
1249
  )
1249
1250
  } else {
1250
- groups = XEUtils.searchTree(isGroup ? collectColumn : tableFullColumn, (column, index) => column.visible && (!columnFilterMethod || columnFilterMethod({ column, $columnIndex: index })), { children: 'children', mapChildren: 'childNodes', original: true })
1251
+ groups = XEUtils.searchTree(isGroup ? collectColumn : tableFullColumn, (column, index) => column.visible && (!columnFilterMethod || columnFilterMethod({ $table: $xeTable, column, $columnIndex: index })), { children: 'children', mapChildren: 'childNodes', original: true })
1251
1252
  }
1252
1253
  // 获取所有列
1253
1254
  const cols: VxeTableDefines.ColumnInfo[] = []
@@ -1,7 +1,7 @@
1
1
  import XEUtils from 'xe-utils'
2
2
  import { VxeUI } from '../../../ui'
3
3
  import { getRefElem } from '../../src/util'
4
- import { hasClass, getAbsolutePos, addClass, removeClass } from '../../../ui/src/dom'
4
+ import { hasClass, getAbsolutePos, addClass, removeClass, hasControlKey } from '../../../ui/src/dom'
5
5
 
6
6
  import type { TableKeyboardPrivateMethods, VxeTableDefines } from '../../../../types'
7
7
 
@@ -179,8 +179,9 @@ hooks.add('tableKeyboardModule', {
179
179
  const rangeRows = getCheckboxRangeRows(evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight)
180
180
  // 至少滑动 10px 才能有效匹配
181
181
  if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
182
+ const isControlKey = hasControlKey(evnt)
182
183
  lastRangeRows = rangeRows
183
- if (evnt.ctrlKey) {
184
+ if (isControlKey) {
184
185
  rangeRows.forEach((row: any) => {
185
186
  $xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1)
186
187
  })