vxe-table 4.8.0 → 4.8.1
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.
- package/es/locale/lang/en-US.js +4 -2
- package/es/locale/lang/es-ES.js +4 -2
- package/es/locale/lang/hu-HU.js +4 -2
- package/es/locale/lang/ja-JP.js +4 -2
- package/es/locale/lang/ko-KR.js +4 -2
- package/es/locale/lang/pt-BR.js +4 -2
- package/es/locale/lang/ru-RU.js +4 -2
- package/es/locale/lang/uk-UA.js +4 -2
- package/es/locale/lang/vi-VN.js +4 -2
- package/es/locale/lang/zh-CHT.js +4 -2
- package/es/locale/lang/zh-CN.js +4 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/hook.js +7 -4
- package/es/table/src/body.js +22 -8
- package/es/table/src/cell.js +53 -24
- package/es/table/src/column.js +3 -1
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/emits.js +3 -0
- package/es/table/src/props.js +2 -0
- package/es/table/src/table.js +241 -40
- package/es/table/style.css +74 -2
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +74 -2
- package/es/vxe-table/style.min.css +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/index.umd.js +359 -82
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +4 -2
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +4 -2
- package/lib/locale/lang/es-ES.js +4 -2
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +4 -2
- package/lib/locale/lang/hu-HU.js +4 -2
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +4 -2
- package/lib/locale/lang/ja-JP.js +4 -2
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +4 -2
- package/lib/locale/lang/ko-KR.js +4 -2
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +4 -2
- package/lib/locale/lang/pt-BR.js +4 -2
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +4 -2
- package/lib/locale/lang/ru-RU.js +4 -2
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +4 -2
- package/lib/locale/lang/uk-UA.js +4 -2
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +4 -2
- package/lib/locale/lang/vi-VN.js +4 -2
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +4 -2
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CN.js +4 -2
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +4 -2
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/hook.js +8 -4
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/src/body.js +18 -5
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +60 -24
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +3 -1
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/props.js +2 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +258 -43
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +74 -2
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +74 -2
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/en-US.ts +4 -2
- package/packages/locale/lang/es-ES.ts +4 -2
- package/packages/locale/lang/hu-HU.ts +4 -2
- package/packages/locale/lang/ja-JP.ts +4 -2
- package/packages/locale/lang/ko-KR.ts +4 -2
- package/packages/locale/lang/pt-BR.ts +4 -2
- package/packages/locale/lang/ru-RU.ts +4 -2
- package/packages/locale/lang/uk-UA.ts +4 -2
- package/packages/locale/lang/vi-VN.ts +4 -2
- package/packages/locale/lang/zh-CHT.ts +4 -2
- package/packages/locale/lang/zh-CN.ts +4 -2
- package/packages/table/module/custom/panel.ts +1 -1
- package/packages/table/module/edit/hook.ts +7 -4
- package/packages/table/src/body.ts +22 -8
- package/packages/table/src/cell.ts +57 -24
- package/packages/table/src/column.ts +3 -1
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/emits.ts +4 -0
- package/packages/table/src/props.ts +2 -0
- package/packages/table/src/table.ts +258 -42
- package/packages/ui/index.ts +3 -0
- package/styles/components/table-module/custom.scss +9 -3
- package/styles/components/table.scss +80 -0
- /package/es/{iconfont.1730681238555.ttf → iconfont.1730873064176.ttf} +0 -0
- /package/es/{iconfont.1730681238555.woff → iconfont.1730873064176.woff} +0 -0
- /package/es/{iconfont.1730681238555.woff2 → iconfont.1730873064176.woff2} +0 -0
- /package/lib/{iconfont.1730681238555.ttf → iconfont.1730873064176.ttf} +0 -0
- /package/lib/{iconfont.1730681238555.woff → iconfont.1730873064176.woff} +0 -0
- /package/lib/{iconfont.1730681238555.woff2 → iconfont.1730873064176.woff2} +0 -0
|
@@ -18,8 +18,8 @@ import TableImportPanelComponent from '../module/export/import-panel'
|
|
|
18
18
|
import TableExportPanelComponent from '../module/export/export-panel'
|
|
19
19
|
import TableMenuPanelComponent from '../module/menu/panel'
|
|
20
20
|
|
|
21
|
-
import type { VxeLoadingComponent, VxeTooltipInstance, VxeTooltipComponent, VxeTabsConstructor, VxeTabsPrivateMethods } from 'vxe-pc-ui'
|
|
22
|
-
import type { VxeGridConstructor, VxeGridPrivateMethods, VxeTableConstructor, TableReactData, TableInternalData, VxeTablePropTypes, VxeToolbarConstructor, TablePrivateMethods, VxeTablePrivateRef, VxeTablePrivateComputed, VxeTablePrivateMethods, TableMethods, VxeTableMethods, VxeTableDefines, VxeTableProps, VxeColumnPropTypes } from '../../../types'
|
|
21
|
+
import type { VxeLoadingComponent, VxeTooltipInstance, VxeTooltipComponent, VxeTabsConstructor, VxeTabsPrivateMethods, ValueOf } from 'vxe-pc-ui'
|
|
22
|
+
import type { VxeGridConstructor, VxeGridPrivateMethods, VxeTableConstructor, TableReactData, TableInternalData, VxeTablePropTypes, VxeToolbarConstructor, TablePrivateMethods, VxeTablePrivateRef, VxeTablePrivateComputed, VxeTablePrivateMethods, TableMethods, VxeTableMethods, VxeTableDefines, VxeTableEmits, VxeTableProps, VxeColumnPropTypes } from '../../../types'
|
|
23
23
|
|
|
24
24
|
const { getConfig, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns } = VxeUI
|
|
25
25
|
|
|
@@ -260,6 +260,9 @@ export default defineComponent({
|
|
|
260
260
|
isFooter: false
|
|
261
261
|
},
|
|
262
262
|
scrollVMLoading: false,
|
|
263
|
+
isDragRowMove: false,
|
|
264
|
+
dragRow: null,
|
|
265
|
+
dragTipText: '',
|
|
263
266
|
_isResize: false,
|
|
264
267
|
_isLoading: false
|
|
265
268
|
})
|
|
@@ -335,6 +338,8 @@ export default defineComponent({
|
|
|
335
338
|
columnStatusMaps: {},
|
|
336
339
|
// 行选取状态
|
|
337
340
|
rowStatusMaps: {},
|
|
341
|
+
// prevDragRow: null,
|
|
342
|
+
|
|
338
343
|
inited: false,
|
|
339
344
|
tooltipTimeout: null,
|
|
340
345
|
initStatus: false,
|
|
@@ -367,6 +372,8 @@ export default defineComponent({
|
|
|
367
372
|
const refCellResizeBar = ref() as Ref<HTMLDivElement>
|
|
368
373
|
const refEmptyPlaceholder = ref() as Ref<HTMLDivElement>
|
|
369
374
|
|
|
375
|
+
const refRowDragTipElem = ref<HTMLDivElement>()
|
|
376
|
+
|
|
370
377
|
const refScrollXVirtualElem = ref<HTMLDivElement>()
|
|
371
378
|
const refScrollYVirtualElem = ref<HTMLDivElement>()
|
|
372
379
|
const refScrollXHandleElem = ref<HTMLDivElement>()
|
|
@@ -421,6 +428,10 @@ export default defineComponent({
|
|
|
421
428
|
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig) as VxeTablePropTypes.RowOpts
|
|
422
429
|
})
|
|
423
430
|
|
|
431
|
+
const computeDragOpts = computed(() => {
|
|
432
|
+
return Object.assign({}, getConfig().table.dragConfig, props.dragConfig) as VxeTablePropTypes.DragConfig
|
|
433
|
+
})
|
|
434
|
+
|
|
424
435
|
const computeResizeOpts = computed(() => {
|
|
425
436
|
return Object.assign({}, getConfig().table.resizeConfig, props.resizeConfig) as VxeTablePropTypes.ResizeOpts
|
|
426
437
|
})
|
|
@@ -673,6 +684,7 @@ export default defineComponent({
|
|
|
673
684
|
computeColumnOpts,
|
|
674
685
|
computeCellOpts,
|
|
675
686
|
computeRowOpts,
|
|
687
|
+
computeDragOpts,
|
|
676
688
|
computeResizeOpts,
|
|
677
689
|
computeResizableOpts,
|
|
678
690
|
computeSeqOpts,
|
|
@@ -2846,7 +2858,7 @@ export default defineComponent({
|
|
|
2846
2858
|
const handleCheckAllEvent = (evnt: Event | null, value: any) => {
|
|
2847
2859
|
handleCheckedAllCheckboxRow(value)
|
|
2848
2860
|
if (evnt) {
|
|
2849
|
-
|
|
2861
|
+
dispatchEvent('checkbox-all', {
|
|
2850
2862
|
records: tableMethods.getCheckboxRecords(),
|
|
2851
2863
|
reserves: tableMethods.getCheckboxReserveRecords(),
|
|
2852
2864
|
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
|
|
@@ -2909,22 +2921,29 @@ export default defineComponent({
|
|
|
2909
2921
|
loadScrollYData()
|
|
2910
2922
|
}, 20, { leading: false, trailing: true })
|
|
2911
2923
|
|
|
2912
|
-
const
|
|
2913
|
-
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
2924
|
+
const handleSyncScrollX = (scrollLeft: number) => {
|
|
2914
2925
|
const tableHeader = refTableHeader.value
|
|
2915
2926
|
const tableBody = refTableBody.value
|
|
2916
2927
|
const tableFooter = refTableFooter.value
|
|
2917
2928
|
const bodyElem = tableBody.$el as HTMLDivElement
|
|
2918
2929
|
const headerElem = tableHeader ? tableHeader.$el as HTMLDivElement : null
|
|
2919
2930
|
const footerElem = tableFooter ? tableFooter.$el as HTMLDivElement : null
|
|
2931
|
+
setScrollLeft(bodyElem, scrollLeft)
|
|
2932
|
+
setScrollLeft(headerElem, scrollLeft)
|
|
2933
|
+
setScrollLeft(footerElem, scrollLeft)
|
|
2934
|
+
setScrollLeft(bodyElem, scrollLeft)
|
|
2935
|
+
setScrollLeft(headerElem, scrollLeft)
|
|
2936
|
+
setScrollLeft(footerElem, scrollLeft)
|
|
2937
|
+
}
|
|
2938
|
+
|
|
2939
|
+
const scrollXEvent = (evnt: Event) => {
|
|
2940
|
+
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
2920
2941
|
const { scrollTop, scrollLeft } = wrapperEl
|
|
2921
2942
|
const isRollX = true
|
|
2922
2943
|
const isRollY = false
|
|
2923
2944
|
internalData.lastScrollLeft = scrollLeft
|
|
2924
2945
|
reactData.lastScrollTime = Date.now()
|
|
2925
|
-
|
|
2926
|
-
setScrollLeft(headerElem, scrollLeft)
|
|
2927
|
-
setScrollLeft(footerElem, scrollLeft)
|
|
2946
|
+
handleSyncScrollX(scrollLeft)
|
|
2928
2947
|
$xeTable.triggerScrollXEvent(evnt)
|
|
2929
2948
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
2930
2949
|
type: 'table',
|
|
@@ -2938,22 +2957,26 @@ export default defineComponent({
|
|
|
2938
2957
|
tablePrivateMethods.updateScrollYSpace()
|
|
2939
2958
|
}, 1000, { leading: false, trailing: true })
|
|
2940
2959
|
|
|
2941
|
-
const
|
|
2942
|
-
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
2960
|
+
const handleSyncScrollY = (scrollTop: number) => {
|
|
2943
2961
|
const tableBody = refTableBody.value
|
|
2944
2962
|
const leftBody = refTableLeftBody.value
|
|
2945
2963
|
const rightBody = refTableRightBody.value
|
|
2946
2964
|
const bodyElem = tableBody.$el as HTMLDivElement
|
|
2947
2965
|
const leftElem = leftBody ? leftBody.$el as HTMLDivElement : null
|
|
2948
2966
|
const rightElem = rightBody ? rightBody.$el as HTMLDivElement : null
|
|
2967
|
+
setScrollTop(bodyElem, scrollTop)
|
|
2968
|
+
setScrollTop(leftElem, scrollTop)
|
|
2969
|
+
setScrollTop(rightElem, scrollTop)
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2972
|
+
const scrollYEvent = (evnt: Event) => {
|
|
2973
|
+
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
2949
2974
|
const { scrollTop, scrollLeft } = wrapperEl
|
|
2950
2975
|
const isRollX = false
|
|
2951
2976
|
const isRollY = true
|
|
2952
2977
|
internalData.lastScrollTop = scrollTop
|
|
2953
2978
|
reactData.lastScrollTime = Date.now()
|
|
2954
|
-
|
|
2955
|
-
setScrollTop(leftElem, scrollTop)
|
|
2956
|
-
setScrollTop(rightElem, scrollTop)
|
|
2979
|
+
handleSyncScrollY(scrollTop)
|
|
2957
2980
|
$xeTable.triggerScrollYEvent(evnt)
|
|
2958
2981
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
2959
2982
|
type: 'table',
|
|
@@ -2965,10 +2988,12 @@ export default defineComponent({
|
|
|
2965
2988
|
|
|
2966
2989
|
let keyCtxTimeout: any
|
|
2967
2990
|
|
|
2991
|
+
const dispatchEvent = (type: ValueOf<VxeTableEmits>, params: Record<string, any>, evnt: Event | null) => {
|
|
2992
|
+
emit(type, createEvent(evnt, { $table: $xeTable, $grid: $xeGrid }, params))
|
|
2993
|
+
}
|
|
2994
|
+
|
|
2968
2995
|
tableMethods = {
|
|
2969
|
-
dispatchEvent
|
|
2970
|
-
emit(type, createEvent(evnt, { $table: $xeTable, $grid: $xeGrid }, params))
|
|
2971
|
-
},
|
|
2996
|
+
dispatchEvent,
|
|
2972
2997
|
/**
|
|
2973
2998
|
* 重置表格的一切数据状态
|
|
2974
2999
|
*/
|
|
@@ -4291,7 +4316,7 @@ export default defineComponent({
|
|
|
4291
4316
|
visible: false
|
|
4292
4317
|
})
|
|
4293
4318
|
if (visible) {
|
|
4294
|
-
|
|
4319
|
+
dispatchEvent('filter-visible', { column, property: column.field, field: column.field, filterList: $xeTable.getCheckedFilters(), visible: false }, null)
|
|
4295
4320
|
}
|
|
4296
4321
|
return nextTick()
|
|
4297
4322
|
},
|
|
@@ -5101,7 +5126,7 @@ export default defineComponent({
|
|
|
5101
5126
|
tablePrivateMethods.preventEvent(evnt, 'event.clearAreas', {}, () => {
|
|
5102
5127
|
$xeTable.clearCellAreas()
|
|
5103
5128
|
$xeTable.clearCopyCellArea()
|
|
5104
|
-
|
|
5129
|
+
dispatchEvent('clear-cell-area-selection', { cellAreas }, evnt)
|
|
5105
5130
|
})
|
|
5106
5131
|
}
|
|
5107
5132
|
}
|
|
@@ -5155,7 +5180,7 @@ export default defineComponent({
|
|
|
5155
5180
|
const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
|
|
5156
5181
|
if (isEsc) {
|
|
5157
5182
|
tablePrivateMethods.preventEvent(evnt, 'event.keydown', null, () => {
|
|
5158
|
-
|
|
5183
|
+
dispatchEvent('keydown-start', {}, evnt)
|
|
5159
5184
|
if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKeyboardEvent) {
|
|
5160
5185
|
$xeTable.handleKeyboardEvent(evnt)
|
|
5161
5186
|
} else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
|
|
@@ -5177,8 +5202,8 @@ export default defineComponent({
|
|
|
5177
5202
|
}
|
|
5178
5203
|
}
|
|
5179
5204
|
}
|
|
5180
|
-
|
|
5181
|
-
|
|
5205
|
+
dispatchEvent('keydown', {}, evnt)
|
|
5206
|
+
dispatchEvent('keydown-end', {}, evnt)
|
|
5182
5207
|
})
|
|
5183
5208
|
}
|
|
5184
5209
|
}
|
|
@@ -5358,7 +5383,7 @@ export default defineComponent({
|
|
|
5358
5383
|
}
|
|
5359
5384
|
// 如果按下 del 键,更新表尾数据
|
|
5360
5385
|
tableMethods.updateFooter()
|
|
5361
|
-
|
|
5386
|
+
dispatchEvent('cell-delete-value', params, evnt)
|
|
5362
5387
|
}
|
|
5363
5388
|
}
|
|
5364
5389
|
} else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selected.column)) {
|
|
@@ -5382,7 +5407,7 @@ export default defineComponent({
|
|
|
5382
5407
|
setCellValue(selected.row, selected.column, null)
|
|
5383
5408
|
$xeTable.handleEdit(selected.args, evnt)
|
|
5384
5409
|
}
|
|
5385
|
-
|
|
5410
|
+
dispatchEvent('cell-backspace-value', params, evnt)
|
|
5386
5411
|
}
|
|
5387
5412
|
}
|
|
5388
5413
|
}
|
|
@@ -5429,7 +5454,7 @@ export default defineComponent({
|
|
|
5429
5454
|
}
|
|
5430
5455
|
}
|
|
5431
5456
|
}
|
|
5432
|
-
|
|
5457
|
+
dispatchEvent('keydown', {}, evnt)
|
|
5433
5458
|
})
|
|
5434
5459
|
}
|
|
5435
5460
|
}
|
|
@@ -5447,7 +5472,7 @@ export default defineComponent({
|
|
|
5447
5472
|
$xeTable.handlePasteCellAreaEvent(evnt)
|
|
5448
5473
|
}
|
|
5449
5474
|
}
|
|
5450
|
-
|
|
5475
|
+
dispatchEvent('paste', {}, evnt)
|
|
5451
5476
|
}
|
|
5452
5477
|
}
|
|
5453
5478
|
|
|
@@ -5464,7 +5489,7 @@ export default defineComponent({
|
|
|
5464
5489
|
$xeTable.handleCopyCellAreaEvent(evnt)
|
|
5465
5490
|
}
|
|
5466
5491
|
}
|
|
5467
|
-
|
|
5492
|
+
dispatchEvent('copy', {}, evnt)
|
|
5468
5493
|
}
|
|
5469
5494
|
}
|
|
5470
5495
|
|
|
@@ -5481,7 +5506,7 @@ export default defineComponent({
|
|
|
5481
5506
|
$xeTable.handleCutCellAreaEvent(evnt)
|
|
5482
5507
|
}
|
|
5483
5508
|
}
|
|
5484
|
-
|
|
5509
|
+
dispatchEvent('cut', {}, evnt)
|
|
5485
5510
|
}
|
|
5486
5511
|
}
|
|
5487
5512
|
|
|
@@ -5509,6 +5534,55 @@ export default defineComponent({
|
|
|
5509
5534
|
}
|
|
5510
5535
|
}
|
|
5511
5536
|
|
|
5537
|
+
const clearRowDropOrigin = () => {
|
|
5538
|
+
const el = refElem.value
|
|
5539
|
+
if (el) {
|
|
5540
|
+
const clss = 'row--drag-origin'
|
|
5541
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
5542
|
+
(elem as HTMLTableCellElement).draggable = false
|
|
5543
|
+
removeClass(elem, clss)
|
|
5544
|
+
})
|
|
5545
|
+
}
|
|
5546
|
+
}
|
|
5547
|
+
|
|
5548
|
+
const clearRowDropTarget = () => {
|
|
5549
|
+
const el = refElem.value
|
|
5550
|
+
if (el) {
|
|
5551
|
+
const clss = 'row--drag-active-target'
|
|
5552
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
5553
|
+
removeClass(elem, clss)
|
|
5554
|
+
})
|
|
5555
|
+
}
|
|
5556
|
+
}
|
|
5557
|
+
|
|
5558
|
+
const showRowDropTip = (evnt: DragEvent | MouseEvent) => {
|
|
5559
|
+
const rdTipEl = refRowDragTipElem.value
|
|
5560
|
+
if (!rdTipEl) {
|
|
5561
|
+
return
|
|
5562
|
+
}
|
|
5563
|
+
const el = refElem.value
|
|
5564
|
+
if (!el) {
|
|
5565
|
+
return
|
|
5566
|
+
}
|
|
5567
|
+
if (rdTipEl) {
|
|
5568
|
+
const wrapperRect = el.getBoundingClientRect()
|
|
5569
|
+
rdTipEl.style.display = 'block'
|
|
5570
|
+
rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`
|
|
5571
|
+
rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`
|
|
5572
|
+
}
|
|
5573
|
+
}
|
|
5574
|
+
|
|
5575
|
+
const hideRowDropTip = () => {
|
|
5576
|
+
const rdTipEl = refRowDragTipElem.value
|
|
5577
|
+
if (rdTipEl) {
|
|
5578
|
+
rdTipEl.style.display = ''
|
|
5579
|
+
}
|
|
5580
|
+
}
|
|
5581
|
+
|
|
5582
|
+
const updateRowDropTipContent = (tdEl: HTMLElement) => {
|
|
5583
|
+
reactData.dragTipText = tdEl.textContent || ''
|
|
5584
|
+
}
|
|
5585
|
+
|
|
5512
5586
|
/**
|
|
5513
5587
|
* 处理显示 tooltip
|
|
5514
5588
|
* @param {Event} evnt 事件
|
|
@@ -6254,13 +6328,13 @@ export default defineComponent({
|
|
|
6254
6328
|
if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
|
|
6255
6329
|
tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column))
|
|
6256
6330
|
}
|
|
6257
|
-
|
|
6331
|
+
dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt)
|
|
6258
6332
|
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
6259
6333
|
tablePrivateMethods.triggerCurrentColumnEvent(evnt, params)
|
|
6260
6334
|
}
|
|
6261
6335
|
},
|
|
6262
6336
|
triggerHeaderCellDblclickEvent (evnt, params) {
|
|
6263
|
-
|
|
6337
|
+
dispatchEvent('header-cell-dblclick', Object.assign({ cell: evnt.currentTarget }, params), evnt)
|
|
6264
6338
|
},
|
|
6265
6339
|
/**
|
|
6266
6340
|
* 列点击事件
|
|
@@ -6339,7 +6413,7 @@ export default defineComponent({
|
|
|
6339
6413
|
}
|
|
6340
6414
|
}
|
|
6341
6415
|
}
|
|
6342
|
-
|
|
6416
|
+
dispatchEvent('cell-click', params, evnt)
|
|
6343
6417
|
},
|
|
6344
6418
|
/**
|
|
6345
6419
|
* 列双击点击事件
|
|
@@ -6369,7 +6443,7 @@ export default defineComponent({
|
|
|
6369
6443
|
}
|
|
6370
6444
|
}
|
|
6371
6445
|
}
|
|
6372
|
-
|
|
6446
|
+
dispatchEvent('cell-dblclick', params, evnt)
|
|
6373
6447
|
},
|
|
6374
6448
|
handleToggleCheckRowEvent (evnt, params) {
|
|
6375
6449
|
const { selectCheckboxMaps } = reactData
|
|
@@ -6411,7 +6485,7 @@ export default defineComponent({
|
|
|
6411
6485
|
tableMethods.setAllCheckboxRow(false)
|
|
6412
6486
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
|
|
6413
6487
|
handleCheckedCheckboxRow(rangeRows, true, false)
|
|
6414
|
-
|
|
6488
|
+
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
|
|
6415
6489
|
return
|
|
6416
6490
|
}
|
|
6417
6491
|
}
|
|
@@ -6419,7 +6493,7 @@ export default defineComponent({
|
|
|
6419
6493
|
if (!checkMethod || checkMethod({ row })) {
|
|
6420
6494
|
tablePrivateMethods.handleSelectRow(params, value)
|
|
6421
6495
|
tablePrivateMethods.checkSelectionStatus()
|
|
6422
|
-
|
|
6496
|
+
dispatchEvent('checkbox-change', Object.assign({
|
|
6423
6497
|
records: tableMethods.getCheckboxRecords(),
|
|
6424
6498
|
reserves: tableMethods.getCheckboxReserveRecords(),
|
|
6425
6499
|
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
|
|
@@ -6465,7 +6539,7 @@ export default defineComponent({
|
|
|
6465
6539
|
}
|
|
6466
6540
|
}
|
|
6467
6541
|
if (isChange) {
|
|
6468
|
-
|
|
6542
|
+
dispatchEvent('radio-change', { oldValue, newValue, ...params }, evnt)
|
|
6469
6543
|
}
|
|
6470
6544
|
},
|
|
6471
6545
|
triggerCurrentColumnEvent (evnt, params) {
|
|
@@ -6485,7 +6559,7 @@ export default defineComponent({
|
|
|
6485
6559
|
if (!currentMethod || currentMethod({ row: newValue })) {
|
|
6486
6560
|
tableMethods.setCurrentRow(newValue)
|
|
6487
6561
|
if (isChange) {
|
|
6488
|
-
|
|
6562
|
+
dispatchEvent('current-change', { oldValue, newValue, ...params }, evnt)
|
|
6489
6563
|
}
|
|
6490
6564
|
}
|
|
6491
6565
|
},
|
|
@@ -6507,7 +6581,7 @@ export default defineComponent({
|
|
|
6507
6581
|
const columnIndex = tableMethods.getColumnIndex(column)
|
|
6508
6582
|
const $columnIndex = tableMethods.getVMColumnIndex(column)
|
|
6509
6583
|
tableMethods.setRowExpand(row, expanded)
|
|
6510
|
-
|
|
6584
|
+
dispatchEvent('toggle-row-expand', {
|
|
6511
6585
|
expanded,
|
|
6512
6586
|
column,
|
|
6513
6587
|
columnIndex,
|
|
@@ -6536,7 +6610,7 @@ export default defineComponent({
|
|
|
6536
6610
|
const columnIndex = tableMethods.getColumnIndex(column)
|
|
6537
6611
|
const $columnIndex = tableMethods.getVMColumnIndex(column)
|
|
6538
6612
|
tableMethods.setTreeExpand(row, expanded)
|
|
6539
|
-
|
|
6613
|
+
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt)
|
|
6540
6614
|
}
|
|
6541
6615
|
},
|
|
6542
6616
|
/**
|
|
@@ -6557,9 +6631,141 @@ export default defineComponent({
|
|
|
6557
6631
|
if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
|
|
6558
6632
|
$xeTable.handleSortEvent(evnt, params)
|
|
6559
6633
|
}
|
|
6560
|
-
|
|
6634
|
+
dispatchEvent('sort-change', params, evnt)
|
|
6561
6635
|
}
|
|
6562
6636
|
},
|
|
6637
|
+
handleRowDragDragstartEvent (evnt) {
|
|
6638
|
+
const img = new Image()
|
|
6639
|
+
if (evnt.dataTransfer) {
|
|
6640
|
+
evnt.dataTransfer.setDragImage(img, 0, 0)
|
|
6641
|
+
}
|
|
6642
|
+
},
|
|
6643
|
+
handleRowDragDragendEvent (evnt) {
|
|
6644
|
+
const { treeConfig } = props
|
|
6645
|
+
const rowOpts = computeRowOpts.value
|
|
6646
|
+
const { dragEndMethod } = rowOpts
|
|
6647
|
+
const treeOpts = computeTreeOpts.value
|
|
6648
|
+
const { transform } = treeOpts
|
|
6649
|
+
const { dragRow } = reactData
|
|
6650
|
+
const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
|
|
6651
|
+
if (prevDragRow && dragRow) {
|
|
6652
|
+
// 判断是否有拖动
|
|
6653
|
+
if (prevDragRow !== dragRow) {
|
|
6654
|
+
Promise.resolve(
|
|
6655
|
+
dragEndMethod
|
|
6656
|
+
? dragEndMethod({
|
|
6657
|
+
oldRow: dragRow,
|
|
6658
|
+
newRow: prevDragRow
|
|
6659
|
+
})
|
|
6660
|
+
: true
|
|
6661
|
+
).then((status) => {
|
|
6662
|
+
if (!status) {
|
|
6663
|
+
return
|
|
6664
|
+
}
|
|
6665
|
+
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
6666
|
+
|
|
6667
|
+
// 移出源位置
|
|
6668
|
+
const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
|
|
6669
|
+
const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
|
|
6670
|
+
afterFullData.splice(oafIndex, 1)
|
|
6671
|
+
tableFullData.splice(otfIndex, 1)
|
|
6672
|
+
// 插新位置
|
|
6673
|
+
const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
|
|
6674
|
+
const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
|
|
6675
|
+
const nafIndex = pafIndex + dragOffsetIndex
|
|
6676
|
+
const ntfIndex = ptfIndex + dragOffsetIndex
|
|
6677
|
+
afterFullData.splice(nafIndex, 0, dragRow)
|
|
6678
|
+
tableFullData.splice(ntfIndex, 0, dragRow)
|
|
6679
|
+
|
|
6680
|
+
reactData.isDragRowMove = true
|
|
6681
|
+
$xeTable.cacheRowMap()
|
|
6682
|
+
$xeTable.updateScrollYStatus()
|
|
6683
|
+
$xeTable.handleTableData(treeConfig && transform)
|
|
6684
|
+
if (!(treeConfig && transform)) {
|
|
6685
|
+
$xeTable.updateAfterDataIndex()
|
|
6686
|
+
}
|
|
6687
|
+
$xeTable.updateFooter()
|
|
6688
|
+
$xeTable.checkSelectionStatus()
|
|
6689
|
+
if (reactData.scrollYLoad) {
|
|
6690
|
+
$xeTable.updateScrollYSpace()
|
|
6691
|
+
}
|
|
6692
|
+
nextTick().then(() => {
|
|
6693
|
+
$xeTable.updateCellAreas()
|
|
6694
|
+
return $xeTable.recalculate()
|
|
6695
|
+
})
|
|
6696
|
+
|
|
6697
|
+
dispatchEvent('row-dragend', {
|
|
6698
|
+
oldRow: dragRow,
|
|
6699
|
+
newRow: prevDragRow,
|
|
6700
|
+
_index: {
|
|
6701
|
+
newIndex: nafIndex,
|
|
6702
|
+
oldIndex: oafIndex
|
|
6703
|
+
}
|
|
6704
|
+
}, evnt)
|
|
6705
|
+
}).catch(() => {
|
|
6706
|
+
})
|
|
6707
|
+
}
|
|
6708
|
+
}
|
|
6709
|
+
hideRowDropTip()
|
|
6710
|
+
clearRowDropOrigin()
|
|
6711
|
+
clearRowDropTarget()
|
|
6712
|
+
reactData.dragRow = null
|
|
6713
|
+
setTimeout(() => {
|
|
6714
|
+
reactData.isDragRowMove = false
|
|
6715
|
+
}, 500)
|
|
6716
|
+
},
|
|
6717
|
+
handleRowDragDragoverEvent (evnt) {
|
|
6718
|
+
const trEl = evnt.currentTarget as HTMLElement
|
|
6719
|
+
const rowid = trEl.getAttribute('rowid')
|
|
6720
|
+
const row = $xeTable.getRowById(rowid)
|
|
6721
|
+
clearRowDropTarget()
|
|
6722
|
+
if (row) {
|
|
6723
|
+
evnt.preventDefault()
|
|
6724
|
+
evnt.preventDefault()
|
|
6725
|
+
const { dragRow } = reactData
|
|
6726
|
+
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
|
|
6727
|
+
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
|
|
6728
|
+
addClass(trEl, 'row--drag-active-target')
|
|
6729
|
+
trEl.setAttribute('drag-pos', dragPos)
|
|
6730
|
+
internalData.prevDragRow = row
|
|
6731
|
+
internalData.prevDragPos = dragPos
|
|
6732
|
+
dispatchEvent('row-dragover', {
|
|
6733
|
+
oldRow: dragRow,
|
|
6734
|
+
targetRow: row,
|
|
6735
|
+
dragPos
|
|
6736
|
+
}, evnt)
|
|
6737
|
+
}
|
|
6738
|
+
showRowDropTip(evnt)
|
|
6739
|
+
},
|
|
6740
|
+
handleCellDragMousedownEvent (evnt, params) {
|
|
6741
|
+
evnt.stopPropagation()
|
|
6742
|
+
const rowOpts = computeRowOpts.value
|
|
6743
|
+
const { dragStartMethod } = rowOpts
|
|
6744
|
+
const { row } = params
|
|
6745
|
+
const dragEl = evnt.currentTarget as HTMLElement
|
|
6746
|
+
const tdEl = dragEl.parentNode?.parentNode as HTMLElement
|
|
6747
|
+
const trEl = tdEl.parentNode as HTMLElement
|
|
6748
|
+
reactData.isDragRowMove = false
|
|
6749
|
+
clearRowDropOrigin()
|
|
6750
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
6751
|
+
trEl.draggable = false
|
|
6752
|
+
reactData.dragRow = null
|
|
6753
|
+
hideRowDropTip()
|
|
6754
|
+
return
|
|
6755
|
+
}
|
|
6756
|
+
reactData.dragRow = row
|
|
6757
|
+
trEl.draggable = true
|
|
6758
|
+
addClass(trEl, 'row--drag-origin')
|
|
6759
|
+
showRowDropTip(evnt)
|
|
6760
|
+
updateRowDropTipContent(tdEl)
|
|
6761
|
+
dispatchEvent('row-dragstart', params, evnt)
|
|
6762
|
+
},
|
|
6763
|
+
handleCellDragMouseupEvent () {
|
|
6764
|
+
clearRowDropOrigin()
|
|
6765
|
+
hideRowDropTip()
|
|
6766
|
+
reactData.dragRow = null
|
|
6767
|
+
reactData.isDragRowMove = false
|
|
6768
|
+
},
|
|
6563
6769
|
/**
|
|
6564
6770
|
* 横向 X 可视渲染事件处理
|
|
6565
6771
|
*/
|
|
@@ -6589,7 +6795,7 @@ export default defineComponent({
|
|
|
6589
6795
|
const bodyWidth = bodyElem ? bodyElem.clientWidth : 0
|
|
6590
6796
|
const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0
|
|
6591
6797
|
const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0
|
|
6592
|
-
|
|
6798
|
+
const evntParams = {
|
|
6593
6799
|
bodyHeight,
|
|
6594
6800
|
bodyWidth,
|
|
6595
6801
|
scrollHeight,
|
|
@@ -6597,7 +6803,8 @@ export default defineComponent({
|
|
|
6597
6803
|
isX: isRollX,
|
|
6598
6804
|
isY: isRollY,
|
|
6599
6805
|
...params
|
|
6600
|
-
}
|
|
6806
|
+
}
|
|
6807
|
+
dispatchEvent('scroll', evntParams, evnt)
|
|
6601
6808
|
},
|
|
6602
6809
|
/**
|
|
6603
6810
|
* 纵向 Y 可视渲染事件处理
|
|
@@ -6741,14 +6948,14 @@ export default defineComponent({
|
|
|
6741
6948
|
},
|
|
6742
6949
|
updateScrollXData () {
|
|
6743
6950
|
// reactData.tableColumn = []
|
|
6744
|
-
nextTick(() => {
|
|
6951
|
+
return nextTick().then(() => {
|
|
6745
6952
|
handleTableColumn()
|
|
6746
6953
|
tablePrivateMethods.updateScrollXSpace()
|
|
6747
6954
|
})
|
|
6748
6955
|
},
|
|
6749
6956
|
updateScrollYData () {
|
|
6750
6957
|
// reactData.tableData = []
|
|
6751
|
-
nextTick(() => {
|
|
6958
|
+
return nextTick().then(() => {
|
|
6752
6959
|
tablePrivateMethods.handleTableData()
|
|
6753
6960
|
calcCellHeight()
|
|
6754
6961
|
tablePrivateMethods.updateScrollYSpace()
|
|
@@ -7150,6 +7357,15 @@ export default defineComponent({
|
|
|
7150
7357
|
ref: refTableMenu
|
|
7151
7358
|
})
|
|
7152
7359
|
: createCommentVNode(),
|
|
7360
|
+
/**
|
|
7361
|
+
* 拖拽提示
|
|
7362
|
+
*/
|
|
7363
|
+
rowOpts.drag
|
|
7364
|
+
? h('div', {
|
|
7365
|
+
ref: refRowDragTipElem,
|
|
7366
|
+
class: 'vxe-table--row-drag-hint'
|
|
7367
|
+
}, getI18n('vxe.table.dragTip', [reactData.dragTipText]))
|
|
7368
|
+
: createCommentVNode(),
|
|
7153
7369
|
/**
|
|
7154
7370
|
* 提示相关
|
|
7155
7371
|
*/
|
package/packages/ui/index.ts
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
position: relative;
|
|
5
5
|
display: flex;
|
|
6
6
|
flex-direction: row;
|
|
7
|
+
&.active--drag-origin {
|
|
8
|
+
opacity: 0.5;
|
|
9
|
+
}
|
|
7
10
|
&.active--drag-target {
|
|
8
11
|
&[drag-pos="top"] {
|
|
9
12
|
&::after {
|
|
@@ -166,7 +169,10 @@
|
|
|
166
169
|
padding-left: 0.2em;
|
|
167
170
|
padding-right: 0.4em;
|
|
168
171
|
&:not(.is--disabled) {
|
|
169
|
-
cursor:
|
|
172
|
+
cursor: grab;
|
|
173
|
+
&:active {
|
|
174
|
+
cursor: grabbing;
|
|
175
|
+
}
|
|
170
176
|
&:hover {
|
|
171
177
|
color: var(--vxe-ui-font-primary-color);
|
|
172
178
|
}
|
|
@@ -247,7 +253,7 @@
|
|
|
247
253
|
position: absolute;
|
|
248
254
|
top: 0;
|
|
249
255
|
left: 0;
|
|
250
|
-
padding: 0.6em 1em 0.6em 1.
|
|
256
|
+
padding: 0.6em 1em 0.6em 1.6em;
|
|
251
257
|
max-width: 300px;
|
|
252
258
|
border-radius: var(--vxe-ui-border-radius);
|
|
253
259
|
overflow: hidden;
|
|
@@ -338,7 +344,7 @@
|
|
|
338
344
|
position: absolute;
|
|
339
345
|
left: -1px;
|
|
340
346
|
width: calc(100% + 1px);
|
|
341
|
-
height:
|
|
347
|
+
height: 2px;
|
|
342
348
|
background-color: var(--vxe-ui-font-primary-color);
|
|
343
349
|
z-index: 12;
|
|
344
350
|
}
|