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
@@ -321,6 +321,16 @@ function clearRowDropOrigin($xeTable) {
321
321
  });
322
322
  }
323
323
  }
324
+ function updateRowDropOrigin($xeTable, row) {
325
+ const el = $xeTable.$el;
326
+ if (el) {
327
+ const clss = 'row--drag-origin';
328
+ const rowid = getRowid($xeTable, row);
329
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem) => {
330
+ addClass(elem, clss);
331
+ });
332
+ }
333
+ }
324
334
  function clearRowDropTarget($xeTable) {
325
335
  const el = $xeTable.$el;
326
336
  if (el) {
@@ -330,6 +340,17 @@ function clearRowDropTarget($xeTable) {
330
340
  });
331
341
  }
332
342
  }
343
+ function updateRowDropTarget($xeTable, row, dragPos) {
344
+ const el = $xeTable.$el;
345
+ if (el) {
346
+ const clss = 'row--drag-active-target';
347
+ const rowid = getRowid($xeTable, row);
348
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem) => {
349
+ addClass(elem, clss);
350
+ elem.setAttribute('drag-pos', dragPos);
351
+ });
352
+ }
353
+ }
333
354
  function showRowDropTip(evnt, $xeTable) {
334
355
  const rdTipEl = $xeTable.$refs.refRowDragTipElem;
335
356
  if (!rdTipEl) {
@@ -354,7 +375,19 @@ const hideRowDropTip = ($xeTable) => {
354
375
  };
355
376
  const updateRowDropTipContent = ($xeTable, tdEl) => {
356
377
  const reactData = $xeTable;
357
- reactData.dragTipText = tdEl.textContent || '';
378
+ const { dragRow } = reactData;
379
+ const dragOpts = $xeTable.computeDragOpts;
380
+ const { rowTooltipMethod } = dragOpts;
381
+ let tipContent = '';
382
+ if (rowTooltipMethod) {
383
+ tipContent = `${rowTooltipMethod({
384
+ row: dragRow
385
+ }) || ''}`;
386
+ }
387
+ else {
388
+ tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
389
+ }
390
+ reactData.dragTipText = tipContent;
358
391
  };
359
392
  const Methods = {
360
393
  callSlot(slotFunc, params, h, vNodes) {
@@ -4616,7 +4649,7 @@ const Methods = {
4616
4649
  const treeOpts = $xeTable.computeTreeOpts;
4617
4650
  const { transform } = treeOpts;
4618
4651
  const { dragRow } = reactData;
4619
- const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
4652
+ const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData;
4620
4653
  if (prevDragRow && dragRow) {
4621
4654
  // 判断是否有拖动
4622
4655
  if (prevDragRow !== dragRow) {
@@ -4630,18 +4663,36 @@ const Methods = {
4630
4663
  return;
4631
4664
  }
4632
4665
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
4633
- // 移出源位置
4634
- const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
4635
- const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
4636
- afterFullData.splice(oafIndex, 1);
4637
- tableFullData.splice(otfIndex, 1);
4638
- // 插新位置
4639
- const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
4640
- const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
4641
- const nafIndex = pafIndex + dragOffsetIndex;
4642
- const ntfIndex = ptfIndex + dragOffsetIndex;
4643
- afterFullData.splice(nafIndex, 0, dragRow);
4644
- tableFullData.splice(ntfIndex, 0, dragRow);
4666
+ let oafIndex = -1;
4667
+ let nafIndex = -1;
4668
+ if (treeConfig) {
4669
+ // 移出源位置
4670
+ oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow);
4671
+ const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow);
4672
+ afterTreeFullData.splice(oafIndex, 1);
4673
+ tableFullTreeData.splice(otfIndex, 1);
4674
+ // 插新位置
4675
+ const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow);
4676
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow);
4677
+ nafIndex = pafIndex + dragOffsetIndex;
4678
+ const ntfIndex = ptfIndex + dragOffsetIndex;
4679
+ afterTreeFullData.splice(nafIndex, 0, dragRow);
4680
+ tableFullTreeData.splice(ntfIndex, 0, dragRow);
4681
+ }
4682
+ else {
4683
+ // 移出源位置
4684
+ oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
4685
+ const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
4686
+ afterFullData.splice(oafIndex, 1);
4687
+ tableFullData.splice(otfIndex, 1);
4688
+ // 插新位置
4689
+ const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
4690
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
4691
+ nafIndex = pafIndex + dragOffsetIndex;
4692
+ const ntfIndex = ptfIndex + dragOffsetIndex;
4693
+ afterFullData.splice(nafIndex, 0, dragRow);
4694
+ tableFullData.splice(ntfIndex, 0, dragRow);
4695
+ }
4645
4696
  reactData.isDragRowMove = true;
4646
4697
  $xeTable.cacheRowMap();
4647
4698
  $xeTable.updateScrollYStatus();
@@ -4692,8 +4743,7 @@ const Methods = {
4692
4743
  const { dragRow } = reactData;
4693
4744
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
4694
4745
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
4695
- addClass(trEl, 'row--drag-active-target');
4696
- trEl.setAttribute('drag-pos', dragPos);
4746
+ updateRowDropTarget($xeTable, row, dragPos);
4697
4747
  internalData.prevDragRow = row;
4698
4748
  internalData.prevDragPos = dragPos;
4699
4749
  $xeTable.dispatchEvent('row-dragover', {
@@ -4725,7 +4775,7 @@ const Methods = {
4725
4775
  }
4726
4776
  reactData.dragRow = row;
4727
4777
  trEl.draggable = true;
4728
- addClass(trEl, 'row--drag-origin');
4778
+ updateRowDropOrigin($xeTable, row);
4729
4779
  showRowDropTip(evnt, $xeTable);
4730
4780
  updateRowDropTipContent($xeTable, tdEl);
4731
4781
  $xeTable.dispatchEvent('row-dragstart', params, evnt);
@@ -1021,11 +1021,16 @@ export default {
1021
1021
  const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
1022
1022
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
1023
1023
  const $xeTable = this;
1024
+ const reactData = $xeTable;
1024
1025
  const { _e, $scopedSlots, tId, isCalcColumn, tableData, tableColumn, tableGroupColumn, isGroup, loading, stripe, showHeader, height, tableBorder, treeOpts, treeConfig, mouseConfig, mouseOpts, computeSize, validOpts, showFooter, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, validTipOpts, initStore, columnStore, filterStore, customStore, ctxMenuStore, ctxMenuOpts, footerTableData, columnOpts, rowOpts, checkboxOpts, loadingOpts, editRules } = $xeTable;
1026
+ const { dragRow, dragTipText } = reactData;
1025
1027
  const { leftList, rightList } = columnStore;
1026
1028
  const currLoading = this._isLoading || loading;
1027
1029
  const vSize = computeSize;
1030
+ const dragOpts = $xeTable.computeDragOpts;
1028
1031
  const virtualScrollBars = $xeTable.computeVirtualScrollBars;
1032
+ const dragSlots = dragOpts.slots || {};
1033
+ const rowTipSlot = dragSlots.rowTip;
1029
1034
  return h('div', {
1030
1035
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
1031
1036
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
@@ -1272,11 +1277,13 @@ export default {
1272
1277
  /**
1273
1278
  * 拖拽提示
1274
1279
  */
1275
- rowOpts.drag
1280
+ rowOpts.drag && (dragRow || dragTipText)
1276
1281
  ? h('div', {
1277
1282
  ref: 'refRowDragTipElem',
1278
- class: 'vxe-table--row-drag-hint'
1279
- }, getI18n('vxe.table.dragTip', [this.dragTipText]))
1283
+ class: 'vxe-table--row-drag-tip'
1284
+ }, rowTipSlot
1285
+ ? (dragRow ? this.callSlot(rowTipSlot, { row: dragRow }, h) : [renderEmptyElement($xeTable)])
1286
+ : (dragTipText ? [h('span', dragTipText)] : [renderEmptyElement($xeTable)]))
1280
1287
  : _e(),
1281
1288
  h('div', {}, [
1282
1289
  /**
@@ -1074,7 +1074,7 @@
1074
1074
  .vxe-table-custom-popup--column-item.col--sort, .vxe-table-custom-popup--column-item.col--visible, .vxe-table-custom-popup--column-item.col--resizable, .vxe-table-custom-popup--column-item.col--fixed {
1075
1075
  text-align: center;
1076
1076
  }
1077
- .vxe-table-custom-popup--column-item.col--resizable > .vxe-input {
1077
+ .vxe-table-custom-popup--column-item.col--resizable > .vxe-input, .vxe-table-custom-popup--column-item.col--resizable > .vxe-number-input {
1078
1078
  width: 100%;
1079
1079
  }
1080
1080
 
@@ -2652,7 +2652,7 @@
2652
2652
  .vxe-table--render-default .vxe-body--row-list-move {
2653
2653
  transition: transform 0.35s;
2654
2654
  }
2655
- .vxe-table--render-default .vxe-table--row-drag-hint {
2655
+ .vxe-table--render-default .vxe-table--row-drag-tip {
2656
2656
  display: none;
2657
2657
  position: absolute;
2658
2658
  top: 0;
@@ -2736,10 +2736,7 @@
2736
2736
  .vxe-table--render-default .vxe-body--column.col--selected {
2737
2737
  box-shadow: inset 0px 0px 0px 2px var(--vxe-ui-font-primary-color);
2738
2738
  }
2739
- .vxe-table--render-default .vxe-body--column.col--active, .vxe-table--render-default .vxe-body--column.col--selected {
2740
- position: relative;
2741
- }
2742
- .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint {
2739
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-tip {
2743
2740
  width: 100%;
2744
2741
  position: absolute;
2745
2742
  left: 50%;
@@ -2751,12 +2748,25 @@
2751
2748
  padding-left: var(--vxe-ui-table-cell-padding-left);
2752
2749
  padding-right: var(--vxe-ui-table-cell-padding-right);
2753
2750
  }
2754
- .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint .vxe-cell--valid-error-msg {
2751
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-wrapper {
2755
2752
  display: inline-block;
2756
2753
  border-radius: var(--vxe-ui-border-radius);
2754
+ pointer-events: auto;
2755
+ }
2756
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-beautify {
2757
+ padding: 0.4em 0.8em;
2758
+ color: #fff;
2759
+ background-color: #f56c6c;
2760
+ }
2761
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-beautify .vxe-cell--valid-error-msg {
2762
+ background: transparent;
2763
+ }
2764
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-normal {
2757
2765
  color: var(--vxe-ui-table-validate-error-color);
2758
2766
  background-color: var(--vxe-ui-table-validate-error-background-color);
2759
- pointer-events: auto;
2767
+ }
2768
+ .vxe-table--render-default .vxe-body--column.col--active, .vxe-table--render-default .vxe-body--column.col--selected {
2769
+ position: relative;
2760
2770
  }
2761
2771
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-default-input,
2762
2772
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-default-textarea,
@@ -2767,16 +2777,16 @@
2767
2777
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-ico-picker {
2768
2778
  border-color: var(--vxe-ui-table-validate-error-color);
2769
2779
  }
2770
- .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-hint {
2780
+ .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-tip {
2771
2781
  bottom: 100%;
2772
2782
  }
2773
- .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child:first-child .vxe-cell--valid-error-hint {
2783
+ .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child:first-child .vxe-cell--valid-error-tip {
2774
2784
  bottom: auto;
2775
2785
  }
2776
- .vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-hint {
2786
+ .vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-tip {
2777
2787
  top: calc(100% - 1.3em);
2778
2788
  }
2779
- .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint {
2789
+ .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-tip {
2780
2790
  width: 320px;
2781
2791
  position: absolute;
2782
2792
  bottom: calc(100% + 4px);
@@ -2786,7 +2796,7 @@
2786
2796
  pointer-events: none;
2787
2797
  z-index: 4;
2788
2798
  }
2789
- .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint .vxe-cell--valid-error-msg {
2799
+ .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-tip .vxe-cell--valid-error-msg {
2790
2800
  display: inline-block;
2791
2801
  border-radius: -var(-vxe-border-radius);
2792
2802
  padding: 8px 12px;
@@ -2794,11 +2804,11 @@
2794
2804
  background-color: #f56c6c;
2795
2805
  pointer-events: auto;
2796
2806
  }
2797
- .vxe-table--render-default.old-cell-valid .vxe-body--row:first-child .vxe-cell--valid-error-hint {
2807
+ .vxe-table--render-default.old-cell-valid .vxe-body--row:first-child .vxe-cell--valid-error-tip {
2798
2808
  bottom: auto;
2799
2809
  top: calc(100% + 4px);
2800
2810
  }
2801
- .vxe-table--render-default.old-cell-valid .vxe-body--column:first-child .vxe-cell--valid-error-hint {
2811
+ .vxe-table--render-default.old-cell-valid .vxe-body--column:first-child .vxe-cell--valid-error-tip {
2802
2812
  left: 10px;
2803
2813
  transform: translateX(0);
2804
2814
  text-align: left;