vxe-table 4.17.0-beta.1 → 4.17.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 (75) hide show
  1. package/README.md +2 -2
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/custom/panel.js +34 -32
  7. package/es/table/module/export/export-panel.js +22 -22
  8. package/es/table/module/export/import-panel.js +8 -8
  9. package/es/table/module/keyboard/hook.js +4 -26
  10. package/es/table/render/index.js +14 -2
  11. package/es/table/src/body.js +12 -2
  12. package/es/table/src/emits.js +2 -0
  13. package/es/table/src/header.js +1 -1
  14. package/es/table/src/table.js +50 -15
  15. package/es/table/src/util.js +3 -3
  16. package/es/table/style.css +3 -0
  17. package/es/table/style.min.css +1 -1
  18. package/es/ui/index.js +1 -1
  19. package/es/ui/src/log.js +1 -1
  20. package/es/ui/src/utils.js +6 -5
  21. package/es/vxe-table/style.css +3 -0
  22. package/es/vxe-table/style.min.css +1 -1
  23. package/lib/index.css +1 -1
  24. package/lib/index.min.css +1 -1
  25. package/lib/index.umd.js +99 -101
  26. package/lib/index.umd.min.js +1 -1
  27. package/lib/style.css +1 -1
  28. package/lib/style.min.css +1 -1
  29. package/lib/table/module/custom/panel.js +26 -24
  30. package/lib/table/module/custom/panel.min.js +1 -1
  31. package/lib/table/module/export/export-panel.js +19 -18
  32. package/lib/table/module/export/export-panel.min.js +1 -1
  33. package/lib/table/module/export/import-panel.js +8 -7
  34. package/lib/table/module/export/import-panel.min.js +1 -1
  35. package/lib/table/module/keyboard/hook.js +3 -28
  36. package/lib/table/module/keyboard/hook.min.js +1 -1
  37. package/lib/table/render/index.js +13 -2
  38. package/lib/table/render/index.min.js +1 -1
  39. package/lib/table/src/body.js +0 -1
  40. package/lib/table/src/emits.js +1 -1
  41. package/lib/table/src/emits.min.js +1 -1
  42. package/lib/table/src/header.js +1 -1
  43. package/lib/table/src/table.js +12 -6
  44. package/lib/table/src/table.min.js +1 -1
  45. package/lib/table/src/util.js +3 -3
  46. package/lib/table/src/util.min.js +1 -1
  47. package/lib/table/style/style.css +3 -0
  48. package/lib/table/style/style.min.css +1 -1
  49. package/lib/ui/index.js +1 -1
  50. package/lib/ui/index.min.js +1 -1
  51. package/lib/ui/src/log.js +1 -1
  52. package/lib/ui/src/log.min.js +1 -1
  53. package/lib/ui/src/utils.js +8 -5
  54. package/lib/ui/src/utils.min.js +1 -1
  55. package/lib/vxe-table/style/style.css +3 -0
  56. package/lib/vxe-table/style/style.min.css +1 -1
  57. package/package.json +1 -1
  58. package/packages/table/module/custom/panel.ts +34 -32
  59. package/packages/table/module/export/export-panel.ts +22 -22
  60. package/packages/table/module/export/import-panel.ts +8 -8
  61. package/packages/table/module/keyboard/hook.ts +4 -28
  62. package/packages/table/render/index.ts +26 -17
  63. package/packages/table/src/body.ts +12 -3
  64. package/packages/table/src/emits.ts +2 -0
  65. package/packages/table/src/header.ts +2 -2
  66. package/packages/table/src/table.ts +48 -15
  67. package/packages/table/src/util.ts +3 -3
  68. package/packages/ui/src/utils.ts +7 -5
  69. package/styles/components/table.scss +3 -0
  70. /package/es/{iconfont.1759043328183.ttf → iconfont.1760688141383.ttf} +0 -0
  71. /package/es/{iconfont.1759043328183.woff → iconfont.1760688141383.woff} +0 -0
  72. /package/es/{iconfont.1759043328183.woff2 → iconfont.1760688141383.woff2} +0 -0
  73. /package/lib/{iconfont.1759043328183.ttf → iconfont.1760688141383.ttf} +0 -0
  74. /package/lib/{iconfont.1759043328183.woff → iconfont.1760688141383.woff} +0 -0
  75. /package/lib/{iconfont.1759043328183.woff2 → iconfont.1760688141383.woff2} +0 -0
@@ -1,4 +1,4 @@
1
- import { h, inject, ref, Ref, provide, VNode, PropType, nextTick, TransitionGroup, createCommentVNode, reactive, onUnmounted } from 'vue'
1
+ import { h, inject, ref, Ref, provide, VNode, PropType, nextTick, TransitionGroup, reactive, onUnmounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../../ui/src/comp'
3
3
  import { VxeUI } from '../../../ui'
4
4
  import { formatText } from '../../../ui/src/utils'
@@ -490,7 +490,7 @@ export default defineVxeComponent({
490
490
  }
491
491
  }
492
492
 
493
- $xeTable.dispatchEvent('column-dragend', {
493
+ const csParams = {
494
494
  oldColumn: dragColumn,
495
495
  newColumn,
496
496
  dragColumn,
@@ -500,7 +500,9 @@ export default defineVxeComponent({
500
500
  newIndex: nafIndex,
501
501
  oldIndex: oafIndex
502
502
  }
503
- }, evnt)
503
+ }
504
+ $xeTable.dispatchEvent('custom-sort-change', csParams, evnt)
505
+ $xeTable.dispatchEvent('column-dragend', csParams, evnt)
504
506
 
505
507
  if (immediate) {
506
508
  tableReactData.customColumnList = collectColumn.slice(0)
@@ -678,7 +680,7 @@ export default defineVxeComponent({
678
680
  class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
679
681
  })
680
682
  ])
681
- : createCommentVNode(),
683
+ : renderEmptyElement($xeTable),
682
684
  h('div', {
683
685
  class: 'vxe-table-custom--name-option'
684
686
  }, [
@@ -703,7 +705,7 @@ export default defineVxeComponent({
703
705
  })
704
706
  ])
705
707
  ])
706
- : createCommentVNode(),
708
+ : renderEmptyElement($xeTable),
707
709
  column.type === 'html'
708
710
  ? h('div', {
709
711
  key: '1',
@@ -730,7 +732,7 @@ export default defineVxeComponent({
730
732
  changeFixedOption(column, 'left', $event)
731
733
  }
732
734
  })
733
- : createCommentVNode(),
735
+ : renderEmptyElement($xeTable),
734
736
  VxeUIButtonComponent
735
737
  ? h(VxeUIButtonComponent, {
736
738
  mode: 'text',
@@ -742,9 +744,9 @@ export default defineVxeComponent({
742
744
  changeFixedOption(column, 'right', $event)
743
745
  }
744
746
  })
745
- : createCommentVNode()
747
+ : renderEmptyElement($xeTable)
746
748
  ])
747
- : createCommentVNode()
749
+ : renderEmptyElement($xeTable)
748
750
  ])
749
751
  )
750
752
  }
@@ -850,7 +852,7 @@ export default defineVxeComponent({
850
852
  disabled: !isCustomStatus,
851
853
  onClick: resetCustomEvent
852
854
  })
853
- : createCommentVNode(),
855
+ : renderEmptyElement($xeTable),
854
856
  immediate
855
857
  ? (VxeUIButtonComponent
856
858
  ? h(VxeUIButtonComponent, {
@@ -858,16 +860,16 @@ export default defineVxeComponent({
858
860
  content: customOpts.closeButtonText || getI18n('vxe.table.customClose'),
859
861
  onClick: cancelCloseEvent
860
862
  })
861
- : createCommentVNode())
863
+ : renderEmptyElement($xeTable))
862
864
  : (VxeUIButtonComponent
863
865
  ? h(VxeUIButtonComponent, {
864
866
  mode: 'text',
865
867
  content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'),
866
868
  onClick: cancelCustomEvent
867
869
  })
868
- : createCommentVNode()),
870
+ : renderEmptyElement($xeTable)),
869
871
  immediate
870
- ? createCommentVNode()
872
+ ? renderEmptyElement($xeTable)
871
873
  : (VxeUIButtonComponent
872
874
  ? h(VxeUIButtonComponent, {
873
875
  mode: 'text',
@@ -875,7 +877,7 @@ export default defineVxeComponent({
875
877
  content: customOpts.confirmButtonText || getI18n('vxe.table.customConfirm'),
876
878
  onClick: confirmCustomEvent
877
879
  })
878
- : createCommentVNode())
880
+ : renderEmptyElement($xeTable))
879
881
  ])
880
882
  ])
881
883
  : null
@@ -984,7 +986,7 @@ export default defineVxeComponent({
984
986
  })
985
987
  ])
986
988
  ])
987
- : createCommentVNode(),
989
+ : renderEmptyElement($xeTable),
988
990
  h('td', {
989
991
  class: 'vxe-table-custom-popup--column-item col--name'
990
992
  }, [
@@ -1012,7 +1014,7 @@ export default defineVxeComponent({
1012
1014
  : h('div', {
1013
1015
  class: 'vxe-table-custom-popup--column-sort-placeholder'
1014
1016
  }))
1015
- : createCommentVNode(),
1017
+ : renderEmptyElement($xeTable),
1016
1018
  column.type === 'html'
1017
1019
  ? h('div', {
1018
1020
  key: '1',
@@ -1052,10 +1054,10 @@ export default defineVxeComponent({
1052
1054
  changeColumnWidth(column)
1053
1055
  }
1054
1056
  })
1055
- : createCommentVNode()
1057
+ : renderEmptyElement($xeTable)
1056
1058
  )
1057
1059
  ])
1058
- : createCommentVNode(),
1060
+ : renderEmptyElement($xeTable),
1059
1061
  allowFixed
1060
1062
  ? h('td', {
1061
1063
  class: 'vxe-table-custom-popup--column-item col--fixed'
@@ -1078,10 +1080,10 @@ export default defineVxeComponent({
1078
1080
  changeFixedOption(column, label, $event)
1079
1081
  }
1080
1082
  })
1081
- : createCommentVNode()
1083
+ : renderEmptyElement($xeTable)
1082
1084
  )
1083
1085
  ])
1084
- : createCommentVNode()
1086
+ : renderEmptyElement($xeTable)
1085
1087
  ])
1086
1088
  )
1087
1089
  }
@@ -1112,7 +1114,7 @@ export default defineVxeComponent({
1112
1114
  ? h('col', {
1113
1115
  class: 'vxe-table-custom-popup--table-col-seq'
1114
1116
  })
1115
- : createCommentVNode(),
1117
+ : renderEmptyElement($xeTable),
1116
1118
  h('col', {
1117
1119
  class: 'vxe-table-custom-popup--table-col-title'
1118
1120
  }),
@@ -1120,12 +1122,12 @@ export default defineVxeComponent({
1120
1122
  ? h('col', {
1121
1123
  class: 'vxe-table-custom-popup--table-col-width'
1122
1124
  })
1123
- : createCommentVNode(),
1125
+ : renderEmptyElement($xeTable),
1124
1126
  allowFixed
1125
1127
  ? h('col', {
1126
1128
  class: 'vxe-table-custom-popup--table-col-fixed'
1127
1129
  })
1128
- : createCommentVNode()
1130
+ : renderEmptyElement($xeTable)
1129
1131
  ]),
1130
1132
  h('thead', {}, [
1131
1133
  h('tr', {}, [
@@ -1147,14 +1149,14 @@ export default defineVxeComponent({
1147
1149
  }, getI18n('vxe.toolbar.customAll'))
1148
1150
  ])
1149
1151
  ])
1150
- : createCommentVNode(),
1152
+ : renderEmptyElement($xeTable),
1151
1153
  h('th', {}, getI18n('vxe.custom.setting.colTitle')),
1152
1154
  allowResizable
1153
1155
  ? h('th', {}, getI18n('vxe.custom.setting.colResizable'))
1154
- : createCommentVNode(),
1156
+ : renderEmptyElement($xeTable),
1155
1157
  allowFixed
1156
1158
  ? h('th', {}, getI18n(`vxe.custom.setting.${maxFixedSize ? 'colFixedMax' : 'colFixed'}`, [maxFixedSize]))
1157
- : createCommentVNode()
1159
+ : renderEmptyElement($xeTable)
1158
1160
  ])
1159
1161
  ]),
1160
1162
  h(TransitionGroup, {
@@ -1193,29 +1195,29 @@ export default defineVxeComponent({
1193
1195
  disabled: !isCustomStatus,
1194
1196
  onClick: resetCustomEvent
1195
1197
  })
1196
- : createCommentVNode(),
1198
+ : renderEmptyElement($xeTable),
1197
1199
  immediate
1198
1200
  ? (VxeUIButtonComponent
1199
1201
  ? h(VxeUIButtonComponent, {
1200
1202
  content: customOpts.closeButtonText || getI18n('vxe.table.customClose'),
1201
1203
  onClick: cancelCloseEvent
1202
1204
  })
1203
- : createCommentVNode())
1205
+ : renderEmptyElement($xeTable))
1204
1206
  : (VxeUIButtonComponent
1205
1207
  ? h(VxeUIButtonComponent, {
1206
1208
  content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'),
1207
1209
  onClick: cancelCustomEvent
1208
1210
  })
1209
- : createCommentVNode()),
1211
+ : renderEmptyElement($xeTable)),
1210
1212
  immediate
1211
- ? createCommentVNode()
1213
+ ? renderEmptyElement($xeTable)
1212
1214
  : (VxeUIButtonComponent
1213
1215
  ? h(VxeUIButtonComponent, {
1214
1216
  status: 'primary',
1215
1217
  content: customOpts.confirmButtonText || getI18n('vxe.custom.cstmConfirm'),
1216
1218
  onClick: confirmCustomEvent
1217
1219
  })
1218
- : createCommentVNode())
1220
+ : renderEmptyElement($xeTable))
1219
1221
  ])
1220
1222
  }
1221
1223
  }
@@ -1240,7 +1242,7 @@ export default defineVxeComponent({
1240
1242
  customStore.visible = value
1241
1243
  }
1242
1244
  }, scopedSlots)
1243
- : createCommentVNode()
1245
+ : renderEmptyElement($xeTable)
1244
1246
  }
1245
1247
  return VxeUIModalComponent
1246
1248
  ? h(VxeUIModalComponent, {
@@ -1266,7 +1268,7 @@ export default defineVxeComponent({
1266
1268
  customStore.visible = value
1267
1269
  }
1268
1270
  }, scopedSlots)
1269
- : createCommentVNode()
1271
+ : renderEmptyElement($xeTable)
1270
1272
  }
1271
1273
 
1272
1274
  const renderVN = () => {
@@ -1,4 +1,4 @@
1
- import { h, createCommentVNode, ref, Ref, computed, reactive, inject, nextTick } from 'vue'
1
+ import { h, ref, Ref, computed, reactive, inject, nextTick } from 'vue'
2
2
  import { defineVxeComponent } from '../../../ui/src/comp'
3
3
  import { VxeUI } from '../../../ui'
4
4
  import XEUtils from 'xe-utils'
@@ -7,7 +7,7 @@ import { errLog } from '../../../ui/src/log'
7
7
 
8
8
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods } from '../../../../types'
9
9
 
10
- const { getI18n, getIcon } = VxeUI
10
+ const { getI18n, getIcon, renderEmptyElement } = VxeUI
11
11
 
12
12
  export default defineVxeComponent({
13
13
  name: 'VxeTableExportPanel',
@@ -260,7 +260,7 @@ export default defineVxeComponent({
260
260
  ? h('div', {
261
261
  class: 'vxe-table-export--panel-top'
262
262
  }, $xeTable.callSlot(topSlot, params))
263
- : createCommentVNode(),
263
+ : renderEmptyElement($xeTable),
264
264
  h('div', {
265
265
  class: 'vxe-table-export--panel-body'
266
266
  }, defaultSlot
@@ -275,7 +275,7 @@ export default defineVxeComponent({
275
275
  h('tbody', [
276
276
  [
277
277
  isPrint
278
- ? createCommentVNode()
278
+ ? renderEmptyElement($xeTable)
279
279
  : h('tr', [
280
280
  h('td', getI18n('vxe.export.expName')),
281
281
  h('td', [
@@ -290,11 +290,11 @@ export default defineVxeComponent({
290
290
  defaultOptions.filename = value
291
291
  }
292
292
  })
293
- : createCommentVNode()
293
+ : renderEmptyElement($xeTable)
294
294
  ])
295
295
  ]),
296
296
  isPrint
297
- ? createCommentVNode()
297
+ ? renderEmptyElement($xeTable)
298
298
  : h('tr', [
299
299
  h('td', getI18n('vxe.export.expType')),
300
300
  h('td', [
@@ -306,7 +306,7 @@ export default defineVxeComponent({
306
306
  defaultOptions.type = value
307
307
  }
308
308
  })
309
- : createCommentVNode()
309
+ : renderEmptyElement($xeTable)
310
310
  ])
311
311
  ]),
312
312
  isPrint || showSheet
@@ -324,10 +324,10 @@ export default defineVxeComponent({
324
324
  defaultOptions.sheetName = value
325
325
  }
326
326
  })
327
- : createCommentVNode()
327
+ : renderEmptyElement($xeTable)
328
328
  ])
329
329
  ])
330
- : createCommentVNode(),
330
+ : renderEmptyElement($xeTable),
331
331
  h('tr', [
332
332
  h('td', getI18n('vxe.export.expMode')),
333
333
  h('td', [
@@ -344,7 +344,7 @@ export default defineVxeComponent({
344
344
  defaultOptions.mode = value
345
345
  }
346
346
  })
347
- : createCommentVNode()
347
+ : renderEmptyElement($xeTable)
348
348
  ])
349
349
  ]),
350
350
  h('tr', [
@@ -400,7 +400,7 @@ export default defineVxeComponent({
400
400
  defaultOptions.isHeader = value
401
401
  }
402
402
  })
403
- : createCommentVNode(),
403
+ : renderEmptyElement($xeTable),
404
404
  VxeUICheckboxComponent
405
405
  ? h(VxeUICheckboxComponent, {
406
406
  modelValue: isHeader ? defaultOptions.isTitle : false,
@@ -411,7 +411,7 @@ export default defineVxeComponent({
411
411
  defaultOptions.isTitle = value
412
412
  }
413
413
  })
414
- : createCommentVNode(),
414
+ : renderEmptyElement($xeTable),
415
415
  VxeUICheckboxComponent
416
416
  ? h(VxeUICheckboxComponent, {
417
417
  modelValue: isHeader && hasColgroup && supportMerge ? defaultOptions.isColgroup : false,
@@ -422,7 +422,7 @@ export default defineVxeComponent({
422
422
  defaultOptions.isColgroup = value
423
423
  }
424
424
  })
425
- : createCommentVNode()
425
+ : renderEmptyElement($xeTable)
426
426
  ]),
427
427
  h('div', {
428
428
  class: 'vxe-table-export--panel-option-row'
@@ -437,7 +437,7 @@ export default defineVxeComponent({
437
437
  defaultOptions.original = value
438
438
  }
439
439
  })
440
- : createCommentVNode(),
440
+ : renderEmptyElement($xeTable),
441
441
  VxeUICheckboxComponent
442
442
  ? h(VxeUICheckboxComponent, {
443
443
  modelValue: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false,
@@ -448,9 +448,9 @@ export default defineVxeComponent({
448
448
  defaultOptions.isMerge = value
449
449
  }
450
450
  })
451
- : createCommentVNode(),
451
+ : renderEmptyElement($xeTable),
452
452
  isPrint || !VxeUICheckboxComponent
453
- ? createCommentVNode()
453
+ ? renderEmptyElement($xeTable)
454
454
  : h(VxeUICheckboxComponent, {
455
455
  modelValue: supportStyle ? defaultOptions.useStyle : false,
456
456
  disabled: !supportStyle,
@@ -470,7 +470,7 @@ export default defineVxeComponent({
470
470
  defaultOptions.isAllExpand = value
471
471
  }
472
472
  })
473
- : createCommentVNode()
473
+ : renderEmptyElement($xeTable)
474
474
  ]),
475
475
  h('div', {
476
476
  class: 'vxe-table-export--panel-option-row'
@@ -485,7 +485,7 @@ export default defineVxeComponent({
485
485
  defaultOptions.isFooter = value
486
486
  }
487
487
  })
488
- : createCommentVNode()
488
+ : renderEmptyElement($xeTable)
489
489
  ])
490
490
  ])
491
491
  ])
@@ -497,7 +497,7 @@ export default defineVxeComponent({
497
497
  ? h('div', {
498
498
  class: 'vxe-table-export--panel-bottom'
499
499
  }, $xeTable.callSlot(bottomSlot, params))
500
- : createCommentVNode()
500
+ : renderEmptyElement($xeTable)
501
501
  ])
502
502
  },
503
503
  footer () {
@@ -522,7 +522,7 @@ export default defineVxeComponent({
522
522
  content: getI18n('vxe.export.expCancel'),
523
523
  onClick: cancelEvent
524
524
  })
525
- : createCommentVNode(),
525
+ : renderEmptyElement($xeTable),
526
526
  VxeUIButtonComponent
527
527
  ? h(VxeUIButtonComponent, {
528
528
  ref: xButtonConfirm,
@@ -530,12 +530,12 @@ export default defineVxeComponent({
530
530
  content: getI18n(isPrint ? 'vxe.export.expPrint' : 'vxe.export.expConfirm'),
531
531
  onClick: confirmEvent
532
532
  })
533
- : createCommentVNode()
533
+ : renderEmptyElement($xeTable)
534
534
  ])
535
535
  ])
536
536
  }
537
537
  })
538
- : createCommentVNode()
538
+ : renderEmptyElement($xeTable)
539
539
  }
540
540
 
541
541
  nextTick(() => {
@@ -1,4 +1,4 @@
1
- import { h, ref, Ref, computed, inject, reactive, nextTick, createCommentVNode } from 'vue'
1
+ import { h, ref, Ref, computed, inject, reactive, nextTick } from 'vue'
2
2
  import { defineVxeComponent } from '../../../ui/src/comp'
3
3
  import { VxeUI } from '../../../ui'
4
4
  import XEUtils from 'xe-utils'
@@ -7,7 +7,7 @@ import { errLog } from '../../../ui/src/log'
7
7
 
8
8
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods } from '../../../../types'
9
9
 
10
- const { getI18n, getIcon } = VxeUI
10
+ const { getI18n, getIcon, renderEmptyElement } = VxeUI
11
11
 
12
12
  export default defineVxeComponent({
13
13
  name: 'VxeTableImportPanel',
@@ -142,7 +142,7 @@ export default defineVxeComponent({
142
142
  ? h('div', {
143
143
  class: 'vxe-table-export--panel-top'
144
144
  }, $xeTable.callSlot(topSlot, params))
145
- : createCommentVNode(),
145
+ : renderEmptyElement($xeTable),
146
146
  h('div', {
147
147
  class: 'vxe-table-export--panel-body'
148
148
  }, defaultSlot
@@ -191,7 +191,7 @@ export default defineVxeComponent({
191
191
  defaultOptions.mode = value
192
192
  }
193
193
  })
194
- : createCommentVNode()
194
+ : renderEmptyElement($xeTable)
195
195
  ])
196
196
  ])
197
197
  ])
@@ -202,7 +202,7 @@ export default defineVxeComponent({
202
202
  ? h('div', {
203
203
  class: 'vxe-table-export--panel-bottom'
204
204
  }, $xeTable.callSlot(bottomSlot, params))
205
- : createCommentVNode()
205
+ : renderEmptyElement($xeTable)
206
206
  ])
207
207
  },
208
208
  footer () {
@@ -226,7 +226,7 @@ export default defineVxeComponent({
226
226
  content: getI18n('vxe.import.impCancel'),
227
227
  onClick: cancelEvent
228
228
  })
229
- : createCommentVNode(),
229
+ : renderEmptyElement($xeTable),
230
230
  VxeUIButtonComponent
231
231
  ? h(VxeUIButtonComponent, {
232
232
  status: 'primary',
@@ -234,13 +234,13 @@ export default defineVxeComponent({
234
234
  content: getI18n('vxe.import.impConfirm'),
235
235
  onClick: importEvent
236
236
  })
237
- : createCommentVNode()
237
+ : renderEmptyElement($xeTable)
238
238
  ])
239
239
  ]
240
240
  )
241
241
  }
242
242
  })
243
- : createCommentVNode()
243
+ : renderEmptyElement($xeTable)
244
244
  }
245
245
 
246
246
  nextTick(() => {
@@ -1,36 +1,12 @@
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, hasControlKey } from '../../../ui/src/dom'
4
+ import { getAbsolutePos, addClass, removeClass, hasControlKey } from '../../../ui/src/dom'
5
5
 
6
6
  import type { TableKeyboardPrivateMethods, VxeTableDefines } from '../../../../types'
7
7
 
8
8
  const { hooks } = VxeUI
9
9
 
10
- const browseObj = XEUtils.browse()
11
-
12
- function getTargetOffset (target: any, container: any) {
13
- let offsetTop = 0
14
- let offsetLeft = 0
15
- const triggerCheckboxLabel = !browseObj.firefox && hasClass(target, 'vxe-checkbox--label')
16
- if (triggerCheckboxLabel) {
17
- const checkboxLabelStyle = getComputedStyle(target)
18
- offsetTop -= XEUtils.toNumber(checkboxLabelStyle.paddingTop)
19
- offsetLeft -= XEUtils.toNumber(checkboxLabelStyle.paddingLeft)
20
- }
21
- while (target && target !== container) {
22
- offsetTop += target.offsetTop
23
- offsetLeft += target.offsetLeft
24
- target = target.offsetParent
25
- if (triggerCheckboxLabel) {
26
- const checkboxStyle = getComputedStyle(target)
27
- offsetTop -= XEUtils.toNumber(checkboxStyle.paddingTop)
28
- offsetLeft -= XEUtils.toNumber(checkboxStyle.paddingLeft)
29
- }
30
- }
31
- return { offsetTop, offsetLeft }
32
- }
33
-
34
10
  hooks.add('tableKeyboardModule', {
35
11
  setupTable ($xeTable) {
36
12
  const { props, reactData, internalData } = $xeTable
@@ -119,6 +95,7 @@ hooks.add('tableKeyboardModule', {
119
95
  if (!bodyWrapperElem) {
120
96
  return
121
97
  }
98
+ const bodyRect = bodyWrapperElem.getBoundingClientRect()
122
99
  const el = refElem.value
123
100
  const disX = evnt.clientX
124
101
  const disY = evnt.clientY
@@ -127,9 +104,8 @@ hooks.add('tableKeyboardModule', {
127
104
  const selectRecords = $xeTable.getCheckboxRecords()
128
105
  let lastRangeRows: any[] = []
129
106
  const marginSize = 1
130
- const offsetRest = getTargetOffset(evnt.target, bodyWrapperElem)
131
- const startTop = offsetRest.offsetTop + evnt.offsetY
132
- const startLeft = offsetRest.offsetLeft + evnt.offsetX
107
+ const startTop = evnt.clientY - bodyRect.y + bodyWrapperElem.scrollTop
108
+ const startLeft = evnt.clientX - bodyRect.x + bodyWrapperElem.scrollLeft
133
109
  const startScrollTop = bodyWrapperElem.scrollTop
134
110
  const rowHeight = trElem.offsetHeight
135
111
  const trRect = trElem.getBoundingClientRect()
@@ -646,30 +646,39 @@ function oldSelectEditRender (renderOpts: VxeGlobalRendererHandles.RenderTableEd
646
646
  }
647
647
 
648
648
  function getSelectCellValue (renderOpts: VxeGlobalRendererHandles.RenderTableEditOptions, { row, column }: any) {
649
- const { options, optionGroups, optionProps = {}, optionGroupProps = {} } = renderOpts
649
+ const { options, optionGroups, optionProps = {}, optionGroupProps = {}, props = {} } = renderOpts
650
650
  const cellValue = XEUtils.get(row, column.field)
651
651
  let selectItem: any
652
652
  const labelProp = optionProps.label || 'label'
653
653
  const valueProp = optionProps.value || 'value'
654
654
  if (!(cellValue === null || cellValue === undefined)) {
655
- return XEUtils.map(XEUtils.isArray(cellValue) ? cellValue : [cellValue],
656
- optionGroups
657
- ? (value) => {
658
- const groupOptions = optionGroupProps.options || 'options'
659
- for (let index = 0; index < optionGroups.length; index++) {
660
- /* eslint-disable eqeqeq */
661
- selectItem = XEUtils.find(optionGroups[index][groupOptions], item => item[valueProp] == value)
662
- if (selectItem) {
663
- break
664
- }
665
- }
666
- return selectItem ? selectItem[labelProp] : value
667
- }
668
- : (value) => {
655
+ let vals = []
656
+ if (XEUtils.isArray(cellValue)) {
657
+ vals = cellValue
658
+ } else {
659
+ if (props.multiple && `${cellValue}`.indexOf(',') > -1) {
660
+ vals = `${cellValue}`.split(',')
661
+ } else {
662
+ vals = [cellValue]
663
+ }
664
+ }
665
+ return XEUtils.map(vals, optionGroups
666
+ ? (value) => {
667
+ const groupOptions = optionGroupProps.options || 'options'
668
+ for (let index = 0; index < optionGroups.length; index++) {
669
669
  /* eslint-disable eqeqeq */
670
- selectItem = XEUtils.find(options, item => item[valueProp] == value)
671
- return selectItem ? selectItem[labelProp] : value
670
+ selectItem = XEUtils.find(optionGroups[index][groupOptions], item => item[valueProp] == value)
671
+ if (selectItem) {
672
+ break
673
+ }
672
674
  }
675
+ return selectItem ? selectItem[labelProp] : value
676
+ }
677
+ : (value) => {
678
+ /* eslint-disable eqeqeq */
679
+ selectItem = XEUtils.find(options, item => item[valueProp] == value)
680
+ return selectItem ? selectItem[labelProp] : value
681
+ }
673
682
  ).join(', ')
674
683
  }
675
684
  return ''
@@ -330,8 +330,6 @@ export default defineVxeComponent({
330
330
  tcStyle.minHeight = `${cellHeight}px`
331
331
  }
332
332
 
333
- // console.log(lastScrollTime)
334
-
335
333
  const tdVNs: VxeComponentSlotType[] = []
336
334
  if (fixedHiddenColumn && isAllOverflow) {
337
335
  tdVNs.push(
@@ -520,7 +518,18 @@ export default defineVxeComponent({
520
518
  seq = rowRest._tIndex + 1
521
519
  }
522
520
  }
523
- const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex }
521
+ const params = {
522
+ $table: $xeTable,
523
+ seq,
524
+ rowid,
525
+ fixed: fixedType,
526
+ type: renderType,
527
+ level: rowLevel,
528
+ row,
529
+ rowIndex,
530
+ $rowIndex,
531
+ _rowIndex
532
+ }
524
533
  // 行是否被展开
525
534
  const isExpandRow = expandColumn && !!rowExpandedFlag && !!rowExpandedMaps[rowid]
526
535
  // 树节点是否被展开
@@ -81,6 +81,7 @@ export const tableEmits: VxeTableEmits = [
81
81
  'custom-visible-change',
82
82
  'custom-visible-all',
83
83
  'custom-fixed-change',
84
+ 'custom-sort-change',
84
85
 
85
86
  'change-fnr', // 废弃
86
87
 
@@ -106,6 +107,7 @@ export const tableEmits: VxeTableEmits = [
106
107
  'cell-area-extension-start',
107
108
  'cell-area-extension-drag',
108
109
  'cell-area-extension-end',
110
+ 'cell-area-extension-fill',
109
111
  'cell-area-selection-all-start',
110
112
  'cell-area-selection-all-end',
111
113
  'cell-area-arrows-start',
@@ -123,7 +123,7 @@ export default defineVxeComponent({
123
123
  columnIndex,
124
124
  $columnIndex,
125
125
  _columnIndex,
126
- firstFilterOption,
126
+ firstFilterOption: firstFilterOption as VxeTableDefines.FilterOption,
127
127
  fixed: fixedType,
128
128
  type: renderType,
129
129
  isHidden: fixedHiddenColumn,
@@ -314,7 +314,7 @@ export default defineVxeComponent({
314
314
  columnIndex,
315
315
  $columnIndex,
316
316
  _columnIndex,
317
- option: firstFilterOption,
317
+ option: firstFilterOption as VxeTableDefines.FilterOption,
318
318
  fixed: fixedType,
319
319
  type: renderType,
320
320
  isHidden: fixedHiddenColumn,