vxe-table 3.10.6 → 3.10.8

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 (57) hide show
  1. package/es/style.css +1 -1
  2. package/es/style.min.css +1 -1
  3. package/es/table/module/custom/panel.js +31 -8
  4. package/es/table/module/validator/mixin.js +1 -1
  5. package/es/table/src/body.js +14 -8
  6. package/es/table/src/cell.js +7 -3
  7. package/es/table/src/header.js +2 -2
  8. package/es/table/src/methods.js +67 -17
  9. package/es/table/src/table.js +10 -3
  10. package/es/table/style.css +25 -15
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +3 -2
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +25 -15
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.umd.js +136 -36
  17. package/lib/index.umd.min.js +1 -1
  18. package/lib/style.css +1 -1
  19. package/lib/style.min.css +1 -1
  20. package/lib/table/module/custom/panel.js +31 -5
  21. package/lib/table/module/custom/panel.min.js +1 -1
  22. package/lib/table/module/validator/mixin.js +1 -1
  23. package/lib/table/module/validator/mixin.min.js +1 -1
  24. package/lib/table/src/body.js +5 -3
  25. package/lib/table/src/body.min.js +1 -1
  26. package/lib/table/src/cell.js +10 -3
  27. package/lib/table/src/cell.min.js +1 -1
  28. package/lib/table/src/header.js +2 -2
  29. package/lib/table/src/methods.js +70 -16
  30. package/lib/table/src/methods.min.js +1 -1
  31. package/lib/table/src/table.js +13 -3
  32. package/lib/table/src/table.min.js +1 -1
  33. package/lib/table/style/style.css +25 -15
  34. package/lib/table/style/style.min.css +1 -1
  35. package/lib/ui/index.js +3 -2
  36. package/lib/ui/index.min.js +1 -1
  37. package/lib/ui/src/log.js +1 -1
  38. package/lib/ui/src/log.min.js +1 -1
  39. package/lib/vxe-table/style/style.css +25 -15
  40. package/lib/vxe-table/style/style.min.css +1 -1
  41. package/package.json +2 -2
  42. package/packages/table/module/custom/panel.ts +34 -8
  43. package/packages/table/module/validator/mixin.ts +6 -1
  44. package/packages/table/src/body.ts +14 -8
  45. package/packages/table/src/cell.ts +9 -5
  46. package/packages/table/src/header.ts +2 -2
  47. package/packages/table/src/methods.ts +68 -17
  48. package/packages/table/src/table.ts +10 -3
  49. package/packages/ui/index.ts +2 -1
  50. package/styles/components/table-module/custom.scss +2 -1
  51. package/styles/components/table.scss +36 -26
  52. /package/es/{iconfont.1730978752470.ttf → iconfont.1731060585164.ttf} +0 -0
  53. /package/es/{iconfont.1730978752470.woff → iconfont.1731060585164.woff} +0 -0
  54. /package/es/{iconfont.1730978752470.woff2 → iconfont.1731060585164.woff2} +0 -0
  55. /package/lib/{iconfont.1730978752470.ttf → iconfont.1731060585164.ttf} +0 -0
  56. /package/lib/{iconfont.1730978752470.woff → iconfont.1731060585164.woff} +0 -0
  57. /package/lib/{iconfont.1730978752470.woff2 → iconfont.1731060585164.woff2} +0 -0
@@ -339,6 +339,17 @@ function clearRowDropOrigin ($xeTable: any) {
339
339
  }
340
340
  }
341
341
 
342
+ function updateRowDropOrigin ($xeTable: any, row: any) {
343
+ const el = $xeTable.$el
344
+ if (el) {
345
+ const clss = 'row--drag-origin'
346
+ const rowid = getRowid($xeTable, row)
347
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem) => {
348
+ addClass(elem, clss)
349
+ })
350
+ }
351
+ }
352
+
342
353
  function clearRowDropTarget ($xeTable: any) {
343
354
  const el = $xeTable.$el
344
355
  if (el) {
@@ -349,6 +360,18 @@ function clearRowDropTarget ($xeTable: any) {
349
360
  }
350
361
  }
351
362
 
363
+ function updateRowDropTarget ($xeTable: any, row: any, dragPos: string) {
364
+ const el = $xeTable.$el
365
+ if (el) {
366
+ const clss = 'row--drag-active-target'
367
+ const rowid = getRowid($xeTable, row)
368
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem: any) => {
369
+ addClass(elem, clss)
370
+ elem.setAttribute('drag-pos', dragPos)
371
+ })
372
+ }
373
+ }
374
+
352
375
  function showRowDropTip (evnt: DragEvent | MouseEvent, $xeTable: any) {
353
376
  const rdTipEl = $xeTable.$refs.refRowDragTipElem as HTMLDivElement
354
377
  if (!rdTipEl) {
@@ -376,7 +399,18 @@ const hideRowDropTip = ($xeTable: any) => {
376
399
  const updateRowDropTipContent = ($xeTable: any, tdEl: HTMLElement) => {
377
400
  const reactData = $xeTable
378
401
 
379
- reactData.dragTipText = tdEl.textContent || ''
402
+ const { dragRow } = reactData
403
+ const dragOpts = $xeTable.computeDragOpts
404
+ const { rowTooltipMethod } = dragOpts
405
+ let tipContent = ''
406
+ if (rowTooltipMethod) {
407
+ tipContent = `${rowTooltipMethod({
408
+ row: dragRow
409
+ }) || ''}`
410
+ } else {
411
+ tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || ''])
412
+ }
413
+ reactData.dragTipText = tipContent
380
414
  }
381
415
 
382
416
  const Methods = {
@@ -4577,7 +4611,7 @@ const Methods = {
4577
4611
  const treeOpts = $xeTable.computeTreeOpts
4578
4612
  const { transform } = treeOpts
4579
4613
  const { dragRow } = reactData
4580
- const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
4614
+ const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData
4581
4615
  if (prevDragRow && dragRow) {
4582
4616
  // 判断是否有拖动
4583
4617
  if (prevDragRow !== dragRow) {
@@ -4594,18 +4628,36 @@ const Methods = {
4594
4628
  }
4595
4629
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
4596
4630
 
4597
- // 移出源位置
4598
- const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
4599
- const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
4600
- afterFullData.splice(oafIndex, 1)
4601
- tableFullData.splice(otfIndex, 1)
4602
- // 插新位置
4603
- const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
4604
- const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
4605
- const nafIndex = pafIndex + dragOffsetIndex
4606
- const ntfIndex = ptfIndex + dragOffsetIndex
4607
- afterFullData.splice(nafIndex, 0, dragRow)
4608
- tableFullData.splice(ntfIndex, 0, dragRow)
4631
+ let oafIndex = -1
4632
+ let nafIndex = -1
4633
+ if (treeConfig) {
4634
+ // 移出源位置
4635
+ oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow)
4636
+ const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow)
4637
+ afterTreeFullData.splice(oafIndex, 1)
4638
+ tableFullTreeData.splice(otfIndex, 1)
4639
+
4640
+ // 插新位置
4641
+ const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow)
4642
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow)
4643
+ nafIndex = pafIndex + dragOffsetIndex
4644
+ const ntfIndex = ptfIndex + dragOffsetIndex
4645
+ afterTreeFullData.splice(nafIndex, 0, dragRow)
4646
+ tableFullTreeData.splice(ntfIndex, 0, dragRow)
4647
+ } else {
4648
+ // 移出源位置
4649
+ oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow)
4650
+ const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow)
4651
+ afterFullData.splice(oafIndex, 1)
4652
+ tableFullData.splice(otfIndex, 1)
4653
+ // 插新位置
4654
+ const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow)
4655
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow)
4656
+ nafIndex = pafIndex + dragOffsetIndex
4657
+ const ntfIndex = ptfIndex + dragOffsetIndex
4658
+ afterFullData.splice(nafIndex, 0, dragRow)
4659
+ tableFullData.splice(ntfIndex, 0, dragRow)
4660
+ }
4609
4661
 
4610
4662
  reactData.isDragRowMove = true
4611
4663
  $xeTable.cacheRowMap()
@@ -4659,8 +4711,7 @@ const Methods = {
4659
4711
  const { dragRow } = reactData
4660
4712
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
4661
4713
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
4662
- addClass(trEl, 'row--drag-active-target')
4663
- trEl.setAttribute('drag-pos', dragPos)
4714
+ updateRowDropTarget($xeTable, row, dragPos)
4664
4715
  internalData.prevDragRow = row
4665
4716
  internalData.prevDragPos = dragPos
4666
4717
  $xeTable.dispatchEvent('row-dragover', {
@@ -4692,7 +4743,7 @@ const Methods = {
4692
4743
  }
4693
4744
  reactData.dragRow = row
4694
4745
  trEl.draggable = true
4695
- addClass(trEl, 'row--drag-origin')
4746
+ updateRowDropOrigin($xeTable, row)
4696
4747
  showRowDropTip(evnt, $xeTable)
4697
4748
  updateRowDropTipContent($xeTable, tdEl)
4698
4749
  $xeTable.dispatchEvent('row-dragstart', params, evnt)
@@ -1044,6 +1044,7 @@ export default {
1044
1044
  const VxeUITooltipComponent = VxeUI.getComponent<VxeTooltipComponent>('VxeTooltip')
1045
1045
 
1046
1046
  const $xeTable = this
1047
+ const reactData = $xeTable
1047
1048
 
1048
1049
  const {
1049
1050
  _e,
@@ -1089,10 +1090,14 @@ export default {
1089
1090
  loadingOpts,
1090
1091
  editRules
1091
1092
  } = $xeTable
1093
+ const { dragRow, dragTipText } = reactData
1092
1094
  const { leftList, rightList } = columnStore
1093
1095
  const currLoading = this._isLoading || loading
1094
1096
  const vSize = computeSize
1097
+ const dragOpts = $xeTable.computeDragOpts
1095
1098
  const virtualScrollBars = $xeTable.computeVirtualScrollBars
1099
+ const dragSlots = dragOpts.slots || {}
1100
+ const rowTipSlot = dragSlots.rowTip
1096
1101
  return h('div', {
1097
1102
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
1098
1103
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
@@ -1339,11 +1344,13 @@ export default {
1339
1344
  /**
1340
1345
  * 拖拽提示
1341
1346
  */
1342
- rowOpts.drag
1347
+ rowOpts.drag && (dragRow || dragTipText)
1343
1348
  ? h('div', {
1344
1349
  ref: 'refRowDragTipElem',
1345
- class: 'vxe-table--row-drag-hint'
1346
- }, getI18n('vxe.table.dragTip', [this.dragTipText]))
1350
+ class: 'vxe-table--row-drag-tip'
1351
+ }, rowTipSlot
1352
+ ? (dragRow ? this.callSlot(rowTipSlot, { row: dragRow }, h) : [renderEmptyElement($xeTable)])
1353
+ : (dragTipText ? [h('span', dragTipText)] : [renderEmptyElement($xeTable)]))
1347
1354
  : _e(),
1348
1355
  h('div', {}, [
1349
1356
  /**
@@ -58,7 +58,8 @@ VxeUI.setConfig({
58
58
  autoClear: true,
59
59
  autoPos: true,
60
60
  message: 'inline',
61
- msgMode: 'single'
61
+ msgMode: 'single',
62
+ theme: 'normal'
62
63
  },
63
64
  columnConfig: {
64
65
  maxFixedSize: 4
@@ -292,7 +292,8 @@
292
292
  text-align: center;
293
293
  }
294
294
  &.col--resizable {
295
- & > .vxe-input {
295
+ & > .vxe-input,
296
+ & > .vxe-number-input {
296
297
  width: 100%;
297
298
  }
298
299
  }
@@ -1299,7 +1299,7 @@
1299
1299
  .vxe-body--row-list-move {
1300
1300
  transition: transform 0.35s;
1301
1301
  }
1302
- .vxe-table--row-drag-hint {
1302
+ .vxe-table--row-drag-tip {
1303
1303
  display: none;
1304
1304
  position: absolute;
1305
1305
  top: 0;
@@ -1427,30 +1427,40 @@
1427
1427
 
1428
1428
  /*校验不通过*/
1429
1429
  .vxe-body--column {
1430
+ .vxe-cell--valid-error-tip {
1431
+ width: 100%;
1432
+ position: absolute;
1433
+ left: 50%;
1434
+ font-size: 12px;
1435
+ line-height: 1.2em;
1436
+ transform: translateX(-50%);
1437
+ text-align: left;
1438
+ z-index: 4;
1439
+ padding-left: var(--vxe-ui-table-cell-padding-left);
1440
+ padding-right: var(--vxe-ui-table-cell-padding-right);
1441
+ }
1442
+ .vxe-cell--valid-error-wrapper {
1443
+ display: inline-block;
1444
+ border-radius: var(--vxe-ui-border-radius);
1445
+ pointer-events: auto;
1446
+ }
1447
+ .vxe-cell--valid-error-theme-beautify {
1448
+ padding: 0.4em 0.8em;
1449
+ color: #fff;
1450
+ background-color: #f56c6c;
1451
+ .vxe-cell--valid-error-msg {
1452
+ background: transparent;
1453
+ }
1454
+ }
1455
+ .vxe-cell--valid-error-theme-normal {
1456
+ color: var(--vxe-ui-table-validate-error-color);
1457
+ background-color: var(--vxe-ui-table-validate-error-background-color);
1458
+ }
1430
1459
  &.col--active,
1431
1460
  &.col--selected {
1432
1461
  position: relative;
1433
1462
  }
1434
1463
  &.col--valid-error {
1435
- .vxe-cell--valid-error-hint {
1436
- width: 100%;
1437
- position: absolute;
1438
- left: 50%;
1439
- font-size: 12px;
1440
- line-height: 1.2em;
1441
- transform: translateX(-50%);
1442
- text-align: left;
1443
- z-index: 4;
1444
- padding-left: var(--vxe-ui-table-cell-padding-left);
1445
- padding-right: var(--vxe-ui-table-cell-padding-right);
1446
- .vxe-cell--valid-error-msg {
1447
- display: inline-block;
1448
- border-radius: var(--vxe-ui-border-radius);
1449
- color: var(--vxe-ui-table-validate-error-color);
1450
- background-color: var(--vxe-ui-table-validate-error-background-color);
1451
- pointer-events: auto;
1452
- }
1453
- }
1454
1464
  .vxe-default-input,
1455
1465
  .vxe-default-textarea,
1456
1466
  .vxe-default-select {
@@ -1465,11 +1475,11 @@
1465
1475
  &.valid-msg--single {
1466
1476
  .vxe-body--row {
1467
1477
  &:last-child {
1468
- .vxe-cell--valid-error-hint {
1478
+ .vxe-cell--valid-error-tip {
1469
1479
  bottom: calc(100%);
1470
1480
  }
1471
1481
  &:first-child {
1472
- .vxe-cell--valid-error-hint {
1482
+ .vxe-cell--valid-error-tip {
1473
1483
  bottom: auto;
1474
1484
  }
1475
1485
  }
@@ -1479,7 +1489,7 @@
1479
1489
  &.valid-msg--full {
1480
1490
  .vxe-body--row {
1481
1491
  &:last-child {
1482
- .vxe-cell--valid-error-hint {
1492
+ .vxe-cell--valid-error-tip {
1483
1493
  top: calc(100% - 1.3em);
1484
1494
  }
1485
1495
  }
@@ -1489,7 +1499,7 @@
1489
1499
  &.old-cell-valid {
1490
1500
  .vxe-body--column {
1491
1501
  &.col--valid-error {
1492
- .vxe-cell--valid-error-hint {
1502
+ .vxe-cell--valid-error-tip {
1493
1503
  width: 320px;
1494
1504
  position: absolute;
1495
1505
  bottom: calc(100% + 4px);
@@ -1511,7 +1521,7 @@
1511
1521
  }
1512
1522
  .vxe-body--row {
1513
1523
  &:first-child {
1514
- .vxe-cell--valid-error-hint {
1524
+ .vxe-cell--valid-error-tip {
1515
1525
  bottom: auto;
1516
1526
  top: calc(100% + 4px);
1517
1527
  }
@@ -1519,7 +1529,7 @@
1519
1529
  }
1520
1530
  .vxe-body--column {
1521
1531
  &:first-child {
1522
- .vxe-cell--valid-error-hint {
1532
+ .vxe-cell--valid-error-tip {
1523
1533
  left: 10px;
1524
1534
  transform: translateX(0);
1525
1535
  text-align: left;