vxe-table 3.10.0 → 3.10.2
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/mixin.js +9 -4
- package/es/table/module/export/export-panel.js +2 -2
- package/es/table/module/export/import-panel.js +1 -1
- package/es/table/src/body.js +43 -24
- package/es/table/src/cell.js +54 -24
- package/es/table/src/column.js +3 -1
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/methods.js +211 -14
- package/es/table/src/props.js +2 -0
- package/es/table/src/table.js +16 -1
- package/es/table/style.css +80 -3
- 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 +80 -3
- 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 +371 -78
- 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-CHT.umd.js +4 -2
- 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/mixin.js +9 -4
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +2 -2
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +1 -1
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/src/body.js +41 -22
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +58 -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/methods.js +227 -14
- package/lib/table/src/methods.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 +15 -2
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +80 -3
- 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 +80 -3
- 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 +8 -8
- package/packages/table/module/edit/mixin.ts +10 -4
- package/packages/table/module/export/export-panel.ts +2 -2
- package/packages/table/module/export/import-panel.ts +1 -1
- package/packages/table/src/body.ts +43 -24
- package/packages/table/src/cell.ts +58 -24
- package/packages/table/src/column.ts +3 -1
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/methods.ts +227 -14
- package/packages/table/src/props.ts +2 -0
- package/packages/table/src/table.ts +16 -1
- package/packages/ui/index.ts +3 -0
- package/styles/components/table-module/custom.scss +9 -3
- package/styles/components/table.scss +89 -0
- /package/es/{iconfont.1730681241769.ttf → iconfont.1730873052490.ttf} +0 -0
- /package/es/{iconfont.1730681241769.woff → iconfont.1730873052490.woff} +0 -0
- /package/es/{iconfont.1730681241769.woff2 → iconfont.1730873052490.woff2} +0 -0
- /package/lib/{iconfont.1730681241769.ttf → iconfont.1730873052490.ttf} +0 -0
- /package/lib/{iconfont.1730681241769.woff → iconfont.1730873052490.woff} +0 -0
- /package/lib/{iconfont.1730681241769.woff2 → iconfont.1730873052490.woff2} +0 -0
|
@@ -328,6 +328,57 @@ function getOrderField (_vm: any, column: any) {
|
|
|
328
328
|
}
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
+
function clearRowDropOrigin ($xeTable: any) {
|
|
332
|
+
const el = $xeTable.$el
|
|
333
|
+
if (el) {
|
|
334
|
+
const clss = 'row--drag-origin'
|
|
335
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
336
|
+
(elem as HTMLTableCellElement).draggable = false
|
|
337
|
+
removeClass(elem, clss)
|
|
338
|
+
})
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
function clearRowDropTarget ($xeTable: any) {
|
|
343
|
+
const el = $xeTable.$el
|
|
344
|
+
if (el) {
|
|
345
|
+
const clss = 'row--drag-active-target'
|
|
346
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
347
|
+
removeClass(elem, clss)
|
|
348
|
+
})
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function showRowDropTip (evnt: DragEvent | MouseEvent, $xeTable: any) {
|
|
353
|
+
const rdTipEl = $xeTable.$refs.refRowDragTipElem as HTMLDivElement
|
|
354
|
+
if (!rdTipEl) {
|
|
355
|
+
return
|
|
356
|
+
}
|
|
357
|
+
const el = $xeTable.$el
|
|
358
|
+
if (!el) {
|
|
359
|
+
return
|
|
360
|
+
}
|
|
361
|
+
if (rdTipEl) {
|
|
362
|
+
const wrapperRect = el.getBoundingClientRect()
|
|
363
|
+
rdTipEl.style.display = 'block'
|
|
364
|
+
rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`
|
|
365
|
+
rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
const hideRowDropTip = ($xeTable: any) => {
|
|
370
|
+
const rdTipEl = $xeTable.$refs.refRowDragTipElem as HTMLDivElement
|
|
371
|
+
if (rdTipEl) {
|
|
372
|
+
rdTipEl.style.display = ''
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const updateRowDropTipContent = ($xeTable: any, tdEl: HTMLElement) => {
|
|
377
|
+
const reactData = $xeTable
|
|
378
|
+
|
|
379
|
+
reactData.dragTipText = tdEl.textContent || ''
|
|
380
|
+
}
|
|
381
|
+
|
|
331
382
|
const Methods = {
|
|
332
383
|
callSlot (slotFunc: any, params: any, h: any, vNodes: any) {
|
|
333
384
|
if (slotFunc) {
|
|
@@ -4531,6 +4582,153 @@ const Methods = {
|
|
|
4531
4582
|
this.emitEvent('sort-change', params, evnt)
|
|
4532
4583
|
}
|
|
4533
4584
|
},
|
|
4585
|
+
handleRowDragDragstartEvent (evnt: DragEvent) {
|
|
4586
|
+
const img = new Image()
|
|
4587
|
+
if (evnt.dataTransfer) {
|
|
4588
|
+
evnt.dataTransfer.setDragImage(img, 0, 0)
|
|
4589
|
+
}
|
|
4590
|
+
},
|
|
4591
|
+
handleRowDragDragendEvent (evnt: DragEvent) {
|
|
4592
|
+
const $xeTable = this
|
|
4593
|
+
const props = $xeTable
|
|
4594
|
+
const reactData = $xeTable
|
|
4595
|
+
const internalData = $xeTable
|
|
4596
|
+
|
|
4597
|
+
const { treeConfig } = props
|
|
4598
|
+
const rowOpts = $xeTable.computeRowOpts
|
|
4599
|
+
const { dragEndMethod } = rowOpts
|
|
4600
|
+
const treeOpts = $xeTable.computeTreeOpts
|
|
4601
|
+
const { transform } = treeOpts
|
|
4602
|
+
const { dragRow } = reactData
|
|
4603
|
+
const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
|
|
4604
|
+
if (prevDragRow && dragRow) {
|
|
4605
|
+
// 判断是否有拖动
|
|
4606
|
+
if (prevDragRow !== dragRow) {
|
|
4607
|
+
Promise.resolve(
|
|
4608
|
+
dragEndMethod
|
|
4609
|
+
? dragEndMethod({
|
|
4610
|
+
oldRow: dragRow,
|
|
4611
|
+
newRow: prevDragRow
|
|
4612
|
+
})
|
|
4613
|
+
: true
|
|
4614
|
+
).then((status) => {
|
|
4615
|
+
if (!status) {
|
|
4616
|
+
return
|
|
4617
|
+
}
|
|
4618
|
+
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
4619
|
+
|
|
4620
|
+
// 移出源位置
|
|
4621
|
+
const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
|
|
4622
|
+
const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
|
|
4623
|
+
afterFullData.splice(oafIndex, 1)
|
|
4624
|
+
tableFullData.splice(otfIndex, 1)
|
|
4625
|
+
// 插新位置
|
|
4626
|
+
const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
|
|
4627
|
+
const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
|
|
4628
|
+
const nafIndex = pafIndex + dragOffsetIndex
|
|
4629
|
+
const ntfIndex = ptfIndex + dragOffsetIndex
|
|
4630
|
+
afterFullData.splice(nafIndex, 0, dragRow)
|
|
4631
|
+
tableFullData.splice(ntfIndex, 0, dragRow)
|
|
4632
|
+
|
|
4633
|
+
reactData.isDragRowMove = true
|
|
4634
|
+
$xeTable.cacheRowMap()
|
|
4635
|
+
$xeTable.updateScrollYStatus()
|
|
4636
|
+
$xeTable.handleTableData(treeConfig && transform)
|
|
4637
|
+
if (!(treeConfig && transform)) {
|
|
4638
|
+
$xeTable.updateAfterDataIndex()
|
|
4639
|
+
}
|
|
4640
|
+
$xeTable.updateFooter()
|
|
4641
|
+
$xeTable.checkSelectionStatus()
|
|
4642
|
+
if (reactData.scrollYLoad) {
|
|
4643
|
+
$xeTable.updateScrollYSpace()
|
|
4644
|
+
}
|
|
4645
|
+
$xeTable.$nextTick().then(() => {
|
|
4646
|
+
$xeTable.updateCellAreas()
|
|
4647
|
+
return $xeTable.recalculate()
|
|
4648
|
+
})
|
|
4649
|
+
|
|
4650
|
+
$xeTable.dispatchEvent('row-dragend', {
|
|
4651
|
+
oldRow: dragRow,
|
|
4652
|
+
newRow: prevDragRow,
|
|
4653
|
+
_index: {
|
|
4654
|
+
newIndex: nafIndex,
|
|
4655
|
+
oldIndex: oafIndex
|
|
4656
|
+
}
|
|
4657
|
+
}, evnt)
|
|
4658
|
+
}).catch(() => {
|
|
4659
|
+
})
|
|
4660
|
+
}
|
|
4661
|
+
}
|
|
4662
|
+
hideRowDropTip($xeTable)
|
|
4663
|
+
clearRowDropOrigin($xeTable)
|
|
4664
|
+
clearRowDropTarget($xeTable)
|
|
4665
|
+
reactData.dragRow = null
|
|
4666
|
+
setTimeout(() => {
|
|
4667
|
+
reactData.isDragRowMove = false
|
|
4668
|
+
}, 500)
|
|
4669
|
+
},
|
|
4670
|
+
handleRowDragDragoverEvent (evnt: DragEvent) {
|
|
4671
|
+
const $xeTable = this
|
|
4672
|
+
const internalData = $xeTable
|
|
4673
|
+
const reactData = $xeTable
|
|
4674
|
+
|
|
4675
|
+
const trEl = evnt.currentTarget as HTMLElement
|
|
4676
|
+
const rowid = trEl.getAttribute('rowid')
|
|
4677
|
+
const row = $xeTable.getRowById(rowid)
|
|
4678
|
+
clearRowDropTarget($xeTable)
|
|
4679
|
+
if (row) {
|
|
4680
|
+
evnt.preventDefault()
|
|
4681
|
+
evnt.preventDefault()
|
|
4682
|
+
const { dragRow } = reactData
|
|
4683
|
+
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
|
|
4684
|
+
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
|
|
4685
|
+
addClass(trEl, 'row--drag-active-target')
|
|
4686
|
+
trEl.setAttribute('drag-pos', dragPos)
|
|
4687
|
+
internalData.prevDragRow = row
|
|
4688
|
+
internalData.prevDragPos = dragPos
|
|
4689
|
+
$xeTable.dispatchEvent('row-dragover', {
|
|
4690
|
+
oldRow: dragRow,
|
|
4691
|
+
targetRow: row,
|
|
4692
|
+
dragPos
|
|
4693
|
+
}, evnt)
|
|
4694
|
+
}
|
|
4695
|
+
showRowDropTip(evnt, $xeTable)
|
|
4696
|
+
},
|
|
4697
|
+
handleCellDragMousedownEvent (evnt: MouseEvent, params: any) {
|
|
4698
|
+
const $xeTable = this
|
|
4699
|
+
const reactData = $xeTable
|
|
4700
|
+
|
|
4701
|
+
evnt.stopPropagation()
|
|
4702
|
+
const rowOpts = $xeTable.computeRowOpts
|
|
4703
|
+
const { dragStartMethod } = rowOpts
|
|
4704
|
+
const { row } = params
|
|
4705
|
+
const dragEl = evnt.currentTarget as HTMLElement
|
|
4706
|
+
const tdEl = dragEl.parentNode?.parentNode as HTMLElement
|
|
4707
|
+
const trEl = tdEl.parentNode as HTMLElement
|
|
4708
|
+
reactData.isDragRowMove = false
|
|
4709
|
+
clearRowDropOrigin($xeTable)
|
|
4710
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
4711
|
+
trEl.draggable = false
|
|
4712
|
+
reactData.dragRow = null
|
|
4713
|
+
hideRowDropTip($xeTable)
|
|
4714
|
+
return
|
|
4715
|
+
}
|
|
4716
|
+
reactData.dragRow = row
|
|
4717
|
+
trEl.draggable = true
|
|
4718
|
+
addClass(trEl, 'row--drag-origin')
|
|
4719
|
+
showRowDropTip(evnt, $xeTable)
|
|
4720
|
+
updateRowDropTipContent($xeTable, tdEl)
|
|
4721
|
+
$xeTable.dispatchEvent('row-dragstart', params, evnt)
|
|
4722
|
+
},
|
|
4723
|
+
handleCellDragMouseupEvent () {
|
|
4724
|
+
const $xeTable = this
|
|
4725
|
+
const reactData = $xeTable
|
|
4726
|
+
|
|
4727
|
+
clearRowDropOrigin($xeTable)
|
|
4728
|
+
hideRowDropTip($xeTable)
|
|
4729
|
+
reactData.dragRow = null
|
|
4730
|
+
reactData.isDragRowMove = false
|
|
4731
|
+
},
|
|
4534
4732
|
setPendingRow (rows: any, status: any) {
|
|
4535
4733
|
const pendingMaps = { ...this.pendingRowMaps }
|
|
4536
4734
|
const pendingList = [...this.pendingRowList]
|
|
@@ -5384,7 +5582,7 @@ const Methods = {
|
|
|
5384
5582
|
const bodyWidth = bodyElem ? bodyElem.clientWidth : 0
|
|
5385
5583
|
const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0
|
|
5386
5584
|
const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0
|
|
5387
|
-
|
|
5585
|
+
const evntParams = {
|
|
5388
5586
|
bodyHeight,
|
|
5389
5587
|
bodyWidth,
|
|
5390
5588
|
scrollHeight,
|
|
@@ -5392,7 +5590,8 @@ const Methods = {
|
|
|
5392
5590
|
isX: isRollX,
|
|
5393
5591
|
isY: isRollY,
|
|
5394
5592
|
...params
|
|
5395
|
-
}
|
|
5593
|
+
}
|
|
5594
|
+
$xeTable.dispatchEvent('scroll', evntParams, evnt)
|
|
5396
5595
|
},
|
|
5397
5596
|
/**
|
|
5398
5597
|
* 纵向 Y 可视渲染事件处理
|
|
@@ -5411,24 +5610,31 @@ const Methods = {
|
|
|
5411
5610
|
debounceScrollYData: XEUtils.debounce(function () {
|
|
5412
5611
|
this.loadScrollYData()
|
|
5413
5612
|
}, debounceScrollYDuration, { leading: false, trailing: true }),
|
|
5414
|
-
|
|
5613
|
+
handleSyncScrollX (scrollLeft: number) {
|
|
5415
5614
|
const $xeTable = this
|
|
5416
5615
|
|
|
5417
|
-
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
5418
5616
|
const tableHeader = $xeTable.$refs.tableHeader
|
|
5419
5617
|
const tableBody = $xeTable.$refs.tableBody
|
|
5420
5618
|
const tableFooter = $xeTable.$refs.tableFooter
|
|
5421
5619
|
const bodyElem = tableBody.$el as HTMLDivElement
|
|
5422
5620
|
const headerElem = tableHeader ? tableHeader.$el as HTMLDivElement : null
|
|
5423
5621
|
const footerElem = tableFooter ? tableFooter.$el as HTMLDivElement : null
|
|
5424
|
-
const { scrollTop, scrollLeft } = wrapperEl
|
|
5425
|
-
const isRollX = true
|
|
5426
|
-
const isRollY = false
|
|
5427
5622
|
$xeTable.lastScrollLeft = scrollLeft
|
|
5428
5623
|
$xeTable.lastScrollTime = Date.now()
|
|
5429
5624
|
setScrollLeft(bodyElem, scrollLeft)
|
|
5430
5625
|
setScrollLeft(headerElem, scrollLeft)
|
|
5431
5626
|
setScrollLeft(footerElem, scrollLeft)
|
|
5627
|
+
},
|
|
5628
|
+
scrollXEvent (evnt: Event) {
|
|
5629
|
+
const $xeTable = this
|
|
5630
|
+
|
|
5631
|
+
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
5632
|
+
const { scrollTop, scrollLeft } = wrapperEl
|
|
5633
|
+
const isRollX = true
|
|
5634
|
+
const isRollY = false
|
|
5635
|
+
$xeTable.lastScrollLeft = scrollLeft
|
|
5636
|
+
$xeTable.lastScrollTime = Date.now()
|
|
5637
|
+
$xeTable.handleSyncScrollX(scrollLeft)
|
|
5432
5638
|
$xeTable.triggerScrollXEvent(evnt)
|
|
5433
5639
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
5434
5640
|
type: 'table',
|
|
@@ -5440,24 +5646,31 @@ const Methods = {
|
|
|
5440
5646
|
debounceScrollYCalculate: XEUtils.debounce(function () {
|
|
5441
5647
|
this.updateScrollYSpace()
|
|
5442
5648
|
}, 1000, { leading: false, trailing: true }),
|
|
5443
|
-
|
|
5649
|
+
handleSyncScrollY (scrollTop: number) {
|
|
5444
5650
|
const $xeTable = this
|
|
5445
5651
|
|
|
5446
|
-
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
5447
5652
|
const tableBody = $xeTable.$refs.tableBody
|
|
5448
5653
|
const leftBody = $xeTable.$refs.leftBody
|
|
5449
5654
|
const rightBody = $xeTable.$refs.rightBody
|
|
5450
5655
|
const bodyElem = tableBody.$el as HTMLDivElement
|
|
5451
5656
|
const leftElem = leftBody ? leftBody.$el as HTMLDivElement : null
|
|
5452
5657
|
const rightElem = rightBody ? rightBody.$el as HTMLDivElement : null
|
|
5453
|
-
const { scrollTop, scrollLeft } = wrapperEl
|
|
5454
|
-
const isRollX = false
|
|
5455
|
-
const isRollY = true
|
|
5456
5658
|
$xeTable.lastScrollTop = scrollTop
|
|
5457
5659
|
$xeTable.lastScrollTime = Date.now()
|
|
5458
5660
|
setScrollTop(bodyElem, scrollTop)
|
|
5459
5661
|
setScrollTop(leftElem, scrollTop)
|
|
5460
5662
|
setScrollTop(rightElem, scrollTop)
|
|
5663
|
+
},
|
|
5664
|
+
scrollYEvent (evnt: Event) {
|
|
5665
|
+
const $xeTable = this
|
|
5666
|
+
|
|
5667
|
+
const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
5668
|
+
const { scrollTop, scrollLeft } = wrapperEl
|
|
5669
|
+
const isRollX = false
|
|
5670
|
+
const isRollY = true
|
|
5671
|
+
$xeTable.lastScrollTop = scrollTop
|
|
5672
|
+
$xeTable.lastScrollTime = Date.now()
|
|
5673
|
+
$xeTable.handleSyncScrollY(scrollTop)
|
|
5461
5674
|
$xeTable.triggerScrollYEvent(evnt)
|
|
5462
5675
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
5463
5676
|
type: 'table',
|
|
@@ -5542,7 +5755,7 @@ const Methods = {
|
|
|
5542
5755
|
},
|
|
5543
5756
|
updateScrollXData () {
|
|
5544
5757
|
// this.tableColumn = []
|
|
5545
|
-
this.$nextTick(() => {
|
|
5758
|
+
return this.$nextTick().then(() => {
|
|
5546
5759
|
this.handleTableColumn()
|
|
5547
5760
|
this.updateScrollXSpace()
|
|
5548
5761
|
})
|
|
@@ -5593,7 +5806,7 @@ const Methods = {
|
|
|
5593
5806
|
const $xeTable = this
|
|
5594
5807
|
|
|
5595
5808
|
// this.tableData = []
|
|
5596
|
-
this.$nextTick(() => {
|
|
5809
|
+
return this.$nextTick().then(() => {
|
|
5597
5810
|
this.handleTableData()
|
|
5598
5811
|
calcCellHeight($xeTable)
|
|
5599
5812
|
this.updateScrollYSpace()
|
|
@@ -165,6 +165,8 @@ export default {
|
|
|
165
165
|
cellConfig: Object as PropType<VxeTablePropTypes.CellConfig>,
|
|
166
166
|
// 行配置信息
|
|
167
167
|
rowConfig: Object,
|
|
168
|
+
// 可拖拽配置项
|
|
169
|
+
dragConfig: Object as PropType<VxeTablePropTypes.DragConfig>,
|
|
168
170
|
// 列调整配置项
|
|
169
171
|
resizableConfig: Object,
|
|
170
172
|
// 序号配置项
|
|
@@ -352,6 +352,9 @@ export default {
|
|
|
352
352
|
isHeader: false,
|
|
353
353
|
isFooter: false
|
|
354
354
|
},
|
|
355
|
+
isDragRowMove: false,
|
|
356
|
+
dragRow: null,
|
|
357
|
+
dragTipText: '',
|
|
355
358
|
_isLoading: false
|
|
356
359
|
}
|
|
357
360
|
},
|
|
@@ -410,6 +413,9 @@ export default {
|
|
|
410
413
|
computeRowOpts () {
|
|
411
414
|
return Object.assign({}, getConfig().table.rowConfig, this.rowConfig)
|
|
412
415
|
},
|
|
416
|
+
computeDragOpts () {
|
|
417
|
+
return Object.assign({}, getConfig().table.dragConfig, this.dragConfig)
|
|
418
|
+
},
|
|
413
419
|
resizeOpts () {
|
|
414
420
|
return this.computeResizeOpts
|
|
415
421
|
},
|
|
@@ -1330,9 +1336,18 @@ export default {
|
|
|
1330
1336
|
}
|
|
1331
1337
|
})
|
|
1332
1338
|
: _e(),
|
|
1339
|
+
/**
|
|
1340
|
+
* 拖拽提示
|
|
1341
|
+
*/
|
|
1342
|
+
rowOpts.drag
|
|
1343
|
+
? h('div', {
|
|
1344
|
+
ref: 'refRowDragTipElem',
|
|
1345
|
+
class: 'vxe-table--row-drag-hint'
|
|
1346
|
+
}, getI18n('vxe.table.dragTip', [this.dragTipText]))
|
|
1347
|
+
: _e(),
|
|
1333
1348
|
h('div', {}, [
|
|
1334
1349
|
/**
|
|
1335
|
-
*
|
|
1350
|
+
* 提示相关
|
|
1336
1351
|
*/
|
|
1337
1352
|
VxeUITooltipComponent
|
|
1338
1353
|
? h(VxeUITooltipComponent, {
|
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
|
}
|
|
@@ -961,6 +961,15 @@
|
|
|
961
961
|
}
|
|
962
962
|
|
|
963
963
|
&.is--padding {
|
|
964
|
+
.vxe-body--column {
|
|
965
|
+
.vxe-cell {
|
|
966
|
+
padding-left: var(--vxe-ui-table-cell-padding-left);
|
|
967
|
+
padding-right: var(--vxe-ui-table-cell-padding-right);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
.vxe-header--column,
|
|
972
|
+
.vxe-footer--column {
|
|
964
973
|
.vxe-cell {
|
|
965
974
|
padding-left: var(--vxe-ui-table-cell-padding-left);
|
|
966
975
|
padding-right: var(--vxe-ui-table-cell-padding-right);
|
|
@@ -1228,6 +1237,86 @@
|
|
|
1228
1237
|
}
|
|
1229
1238
|
}
|
|
1230
1239
|
|
|
1240
|
+
/*拖拽行*/
|
|
1241
|
+
.vxe-cell--drag-handle {
|
|
1242
|
+
user-select: none;
|
|
1243
|
+
& + span {
|
|
1244
|
+
padding-left: 0.5em;
|
|
1245
|
+
}
|
|
1246
|
+
&:not(.is--disabled) {
|
|
1247
|
+
cursor: grab;
|
|
1248
|
+
&:active {
|
|
1249
|
+
cursor: grabbing;
|
|
1250
|
+
}
|
|
1251
|
+
&:hover {
|
|
1252
|
+
color: var(--vxe-ui-font-primary-color);
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
&.is--disabled {
|
|
1256
|
+
color: var(--vxe-ui-input-disabled-color);
|
|
1257
|
+
cursor: not-allowed;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
.vxe-body--row {
|
|
1261
|
+
&.row--drag-origin {
|
|
1262
|
+
& > .vxe-body--column {
|
|
1263
|
+
& > .vxe-cell {
|
|
1264
|
+
opacity: 0.5;
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
&.row--drag-active-target {
|
|
1269
|
+
& > .vxe-body--column {
|
|
1270
|
+
&::after {
|
|
1271
|
+
display: none;
|
|
1272
|
+
content: "";
|
|
1273
|
+
position: absolute;
|
|
1274
|
+
left: 0;
|
|
1275
|
+
width: 100%;
|
|
1276
|
+
height: 2px;
|
|
1277
|
+
background-color: var(--vxe-ui-font-primary-color);
|
|
1278
|
+
z-index: 12;
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
&[drag-pos="top"] {
|
|
1282
|
+
& > .vxe-body--column {
|
|
1283
|
+
&::after {
|
|
1284
|
+
display: block;
|
|
1285
|
+
top: 0;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
&[drag-pos="bottom"] {
|
|
1290
|
+
& > .vxe-body--column {
|
|
1291
|
+
&::after {
|
|
1292
|
+
display: block;
|
|
1293
|
+
bottom: 0;
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
.vxe-body--row-list-move {
|
|
1300
|
+
transition: transform 0.35s;
|
|
1301
|
+
}
|
|
1302
|
+
.vxe-table--row-drag-hint {
|
|
1303
|
+
display: none;
|
|
1304
|
+
position: absolute;
|
|
1305
|
+
top: 0;
|
|
1306
|
+
left: 0;
|
|
1307
|
+
padding: 0.6em 1em 0.6em 1.6em;
|
|
1308
|
+
max-width: 50%;
|
|
1309
|
+
min-width: 100px;
|
|
1310
|
+
border-radius: var(--vxe-ui-border-radius);
|
|
1311
|
+
overflow: hidden;
|
|
1312
|
+
text-overflow: ellipsis;
|
|
1313
|
+
white-space: nowrap;
|
|
1314
|
+
user-select: none;
|
|
1315
|
+
pointer-events: none;
|
|
1316
|
+
background-color: var(--vxe-ui-layout-background-color);
|
|
1317
|
+
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
|
|
1318
|
+
z-index: 33;
|
|
1319
|
+
}
|
|
1231
1320
|
|
|
1232
1321
|
/*溢出列*/
|
|
1233
1322
|
.vxe-header--column,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|