vxe-table 4.11.17 → 4.11.19

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 (41) hide show
  1. package/es/grid/src/grid.js +4 -1
  2. package/es/style.css +1 -1
  3. package/es/table/render/index.js +88 -57
  4. package/es/table/src/body.js +11 -6
  5. package/es/table/src/footer.js +7 -2
  6. package/es/table/src/table.js +188 -67
  7. package/es/table/src/util.js +13 -3
  8. package/es/ui/index.js +1 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/grid/src/grid.js +4 -1
  11. package/lib/grid/src/grid.min.js +1 -1
  12. package/lib/index.umd.js +335 -143
  13. package/lib/index.umd.min.js +1 -1
  14. package/lib/style.css +1 -1
  15. package/lib/table/render/index.js +96 -62
  16. package/lib/table/render/index.min.js +1 -1
  17. package/lib/table/src/body.js +10 -5
  18. package/lib/table/src/body.min.js +1 -1
  19. package/lib/table/src/footer.js +7 -2
  20. package/lib/table/src/footer.min.js +1 -1
  21. package/lib/table/src/table.js +203 -66
  22. package/lib/table/src/table.min.js +1 -1
  23. package/lib/table/src/util.js +16 -6
  24. package/lib/table/src/util.min.js +1 -1
  25. package/lib/ui/index.js +1 -1
  26. package/lib/ui/index.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/package.json +2 -2
  30. package/packages/grid/src/grid.ts +4 -1
  31. package/packages/table/render/index.ts +87 -55
  32. package/packages/table/src/body.ts +10 -5
  33. package/packages/table/src/footer.ts +7 -2
  34. package/packages/table/src/table.ts +187 -67
  35. package/packages/table/src/util.ts +15 -3
  36. /package/es/{iconfont.1741140593243.ttf → iconfont.1741333398347.ttf} +0 -0
  37. /package/es/{iconfont.1741140593243.woff → iconfont.1741333398347.woff} +0 -0
  38. /package/es/{iconfont.1741140593243.woff2 → iconfont.1741333398347.woff2} +0 -0
  39. /package/lib/{iconfont.1741140593243.ttf → iconfont.1741333398347.ttf} +0 -0
  40. /package/lib/{iconfont.1741140593243.woff → iconfont.1741333398347.woff} +0 -0
  41. /package/lib/{iconfont.1741140593243.woff2 → iconfont.1741333398347.woff2} +0 -0
@@ -3183,7 +3183,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3183
3183
  // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3184
3184
  // }
3185
3185
  if (props.spanMethod) {
3186
- (0, _log.warnLog)('vxe.error.scrollErrProp', ['table.span-method']);
3186
+ (0, _log.errLog)('vxe.error.scrollErrProp', ['table.span-method']);
3187
3187
  }
3188
3188
  }
3189
3189
  handleReserveStatus();
@@ -3944,6 +3944,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
3944
3944
  };
3945
3945
  tableMethods = {
3946
3946
  dispatchEvent,
3947
+ getEl() {
3948
+ return refElem.value;
3949
+ },
3947
3950
  /**
3948
3951
  * 重置表格的一切数据状态
3949
3952
  */
@@ -4309,6 +4312,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4309
4312
  } = props;
4310
4313
  const {
4311
4314
  fullAllDataRowIdData,
4315
+ fullDataRowIdData,
4312
4316
  tableSourceData,
4313
4317
  sourceDataRowIdData,
4314
4318
  tableFullData,
@@ -4320,7 +4324,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4320
4324
  } = treeOpts;
4321
4325
  if (!keepSource) {
4322
4326
  if (process.env.NODE_ENV === 'development') {
4323
- (0, _log.warnLog)('vxe.error.reqProp', ['keep-source']);
4327
+ (0, _log.errLog)('vxe.error.reqProp', ['keep-source']);
4324
4328
  }
4325
4329
  return (0, _vue.nextTick)();
4326
4330
  }
@@ -4334,22 +4338,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
4334
4338
  }
4335
4339
  let reDelFlag = false;
4336
4340
  if (targetRows.length) {
4337
- targetRows.forEach(row => {
4338
- if (!$xeTable.isInsertByRow(row)) {
4339
- const rowid = (0, _util.getRowid)($xeTable, row);
4340
- const oRow = sourceDataRowIdData[rowid];
4341
- if (oRow && row) {
4342
- if (field) {
4343
- _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4344
- } else {
4345
- _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4346
- }
4347
- if ($xeTable.isRemoveByRow(row)) {
4348
- const rowRest = fullAllDataRowIdData[rowid];
4349
- if (rowRest) {
4350
- const reRow = rowRest.row;
4351
- tableFullData.unshift(reRow);
4352
- afterFullData.unshift(reRow);
4341
+ targetRows.forEach(item => {
4342
+ const rowid = (0, _util.getRowid)($xeTable, item);
4343
+ const rowRest = fullAllDataRowIdData[rowid];
4344
+ if (rowRest) {
4345
+ const row = rowRest.row;
4346
+ if (!$xeTable.isInsertByRow(row)) {
4347
+ const oRow = sourceDataRowIdData[rowid];
4348
+ if (oRow && row) {
4349
+ if (field) {
4350
+ _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4351
+ } else {
4352
+ _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4353
+ }
4354
+ if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
4355
+ tableFullData.unshift(row);
4356
+ afterFullData.unshift(row);
4353
4357
  reDelFlag = true;
4354
4358
  }
4355
4359
  }
@@ -4528,10 +4532,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
4528
4532
  },
4529
4533
  /**
4530
4534
  * 检查行或列数据是否发生改变
4531
- * @param {Row} row 行对象
4535
+ * @param {Row} rowOrId 行对象
4532
4536
  * @param {String} field 字段名
4533
4537
  */
4534
- isUpdateByRow(row, field) {
4538
+ isUpdateByRow(rowOrId, field) {
4535
4539
  const {
4536
4540
  keepSource
4537
4541
  } = props;
@@ -4541,11 +4545,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
4541
4545
  sourceDataRowIdData
4542
4546
  } = internalData;
4543
4547
  if (keepSource) {
4544
- const rowid = (0, _util.getRowid)($xeTable, row);
4548
+ const rowid = _xeUtils.default.isString(rowOrId) || _xeUtils.default.isNumber(rowOrId) ? rowOrId : (0, _util.getRowid)($xeTable, rowOrId);
4549
+ const rowRest = fullDataRowIdData[rowid];
4545
4550
  // 新增的数据不需要检测
4546
- if (!fullDataRowIdData[rowid]) {
4551
+ if (!rowRest) {
4547
4552
  return false;
4548
4553
  }
4554
+ const row = rowRest.row;
4549
4555
  const oRow = sourceDataRowIdData[rowid];
4550
4556
  if (oRow) {
4551
4557
  if (arguments.length > 1) {
@@ -4609,6 +4615,108 @@ var _default = exports.default = (0, _vue.defineComponent)({
4609
4615
  tableColumn: reactData.tableColumn.slice(0)
4610
4616
  };
4611
4617
  },
4618
+ /**
4619
+ * 移动列到指定列的位置
4620
+ * @param fieldOrColumn
4621
+ * @param targetFieldOrColumn
4622
+ * @param options
4623
+ */
4624
+ moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
4625
+ const {
4626
+ fullColumnIdData,
4627
+ visibleColumn
4628
+ } = internalData;
4629
+ const {
4630
+ dragToChild,
4631
+ dragPos,
4632
+ isCrossDrag
4633
+ } = Object.assign({}, options);
4634
+ const dragCol = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4635
+ let prevDragCol = null;
4636
+ const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
4637
+ let defPos = 'left';
4638
+ if (_xeUtils.default.isNumber(targetFieldOrColumn)) {
4639
+ if (colRest && targetFieldOrColumn) {
4640
+ let currList = colRest.items;
4641
+ let offsetIndex = colRest._index + targetFieldOrColumn;
4642
+ if (isCrossDrag) {
4643
+ currList = visibleColumn;
4644
+ offsetIndex = colRest._index + targetFieldOrColumn;
4645
+ }
4646
+ if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
4647
+ prevDragCol = currList[offsetIndex];
4648
+ }
4649
+ if (targetFieldOrColumn > 0) {
4650
+ defPos = 'right';
4651
+ }
4652
+ }
4653
+ } else {
4654
+ prevDragCol = (0, _util.handleFieldOrColumn)($xeTable, targetFieldOrColumn);
4655
+ const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
4656
+ if (colRest && targetColRest) {
4657
+ if (targetColRest._index > colRest._index) {
4658
+ defPos = 'right';
4659
+ }
4660
+ }
4661
+ }
4662
+ return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
4663
+ },
4664
+ /**
4665
+ * 移动行到指定行的位置
4666
+ * @param rowidOrRow
4667
+ * @param targetRowidOrRow
4668
+ * @param options
4669
+ */
4670
+ moveRowTo(rowidOrRow, targetRowidOrRow, options) {
4671
+ const {
4672
+ treeConfig
4673
+ } = props;
4674
+ const {
4675
+ fullAllDataRowIdData,
4676
+ afterFullData
4677
+ } = internalData;
4678
+ const {
4679
+ dragToChild,
4680
+ dragPos,
4681
+ isCrossDrag
4682
+ } = Object.assign({}, options);
4683
+ const treeOpts = computeTreeOpts.value;
4684
+ const dragRow = (0, _util.handleRowidOrRow)($xeTable, rowidOrRow);
4685
+ let prevDragRow = null;
4686
+ let defPos = 'top';
4687
+ const rowRest = dragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, dragRow)] : null;
4688
+ if (_xeUtils.default.isNumber(targetRowidOrRow)) {
4689
+ if (rowRest && targetRowidOrRow) {
4690
+ let currList = afterFullData;
4691
+ let offsetIndex = rowRest._index + targetRowidOrRow;
4692
+ if (treeConfig) {
4693
+ currList = rowRest.items;
4694
+ if (treeOpts.transform) {
4695
+ offsetIndex = rowRest.treeIndex + targetRowidOrRow;
4696
+ if (isCrossDrag) {
4697
+ currList = afterFullData;
4698
+ offsetIndex = rowRest._index + targetRowidOrRow;
4699
+ }
4700
+ }
4701
+ }
4702
+ if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
4703
+ prevDragRow = currList[offsetIndex];
4704
+ }
4705
+ if (targetRowidOrRow > 0) {
4706
+ defPos = 'bottom';
4707
+ }
4708
+ }
4709
+ } else {
4710
+ prevDragRow = (0, _util.handleRowidOrRow)($xeTable, targetRowidOrRow);
4711
+ const targetRowRest = prevDragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, prevDragRow)] : null;
4712
+ if (rowRest && targetRowRest) {
4713
+ if (targetRowRest._index > rowRest._index) {
4714
+ defPos = 'bottom';
4715
+ }
4716
+ }
4717
+ }
4718
+ return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
4719
+ },
4612
4720
  /**
4613
4721
  * 获取表格的全量列
4614
4722
  */
@@ -7586,7 +7694,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
7586
7694
  if (el) {
7587
7695
  const parentElem = el.parentNode;
7588
7696
  const parentPaddingSize = height === '100%' || height === 'auto' ? (0, _dom.getPaddingTopBottomSize)(parentElem) : 0;
7589
- return Math.floor($xeGrid ? $xeGrid.getParentHeight() : _xeUtils.default.toNumber(getComputedStyle(parentElem).height) - parentPaddingSize);
7697
+ let parentWrapperHeight = 0;
7698
+ if (parentElem) {
7699
+ if ($xeGrid && (0, _dom.hasClass)(parentElem, 'vxe-grid--table-wrapper')) {
7700
+ parentWrapperHeight = $xeGrid.getParentHeight();
7701
+ } else {
7702
+ parentWrapperHeight = parentElem.clientHeight;
7703
+ }
7704
+ }
7705
+ return Math.floor(parentWrapperHeight - parentPaddingSize);
7590
7706
  }
7591
7707
  return 0;
7592
7708
  },
@@ -9352,6 +9468,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9352
9468
  } = internalData;
9353
9469
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
9354
9470
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
9471
+ const errRest = {
9472
+ status: false
9473
+ };
9355
9474
  if (prevDragRow && dragRow) {
9356
9475
  // 判断是否有拖动
9357
9476
  if (prevDragRow !== dragRow) {
@@ -9366,7 +9485,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9366
9485
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9367
9486
  return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
9368
9487
  if (!status) {
9369
- return;
9488
+ return errRest;
9370
9489
  }
9371
9490
  let oafIndex = -1;
9372
9491
  let nafIndex = -1;
@@ -9397,11 +9516,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9397
9516
  if (isPeerDrag && !isCrossDrag) {
9398
9517
  if (oldRest.row[parentField] !== newRest.row[parentField]) {
9399
9518
  // 非同级
9400
- return;
9519
+ return errRest;
9401
9520
  }
9402
9521
  } else {
9403
9522
  if (!isCrossDrag) {
9404
- return;
9523
+ return errRest;
9405
9524
  }
9406
9525
  if (oldAllMaps[newRowid]) {
9407
9526
  isSelfToChildStatus = true;
@@ -9412,19 +9531,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9412
9531
  content: getI18n('vxe.error.treeDragChild')
9413
9532
  });
9414
9533
  }
9415
- return;
9534
+ return errRest;
9416
9535
  }
9417
9536
  }
9418
9537
  }
9419
9538
  } else if (oldLevel) {
9420
9539
  // 子到根
9421
9540
  if (!isCrossDrag) {
9422
- return;
9541
+ return errRest;
9423
9542
  }
9424
9543
  } else if (newLevel) {
9425
9544
  // 根到子
9426
9545
  if (!isCrossDrag) {
9427
- return;
9546
+ return errRest;
9428
9547
  }
9429
9548
  if (oldAllMaps[newRowid]) {
9430
9549
  isSelfToChildStatus = true;
@@ -9435,7 +9554,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9435
9554
  content: getI18n('vxe.error.treeDragChild')
9436
9555
  });
9437
9556
  }
9438
- return;
9557
+ return errRest;
9439
9558
  }
9440
9559
  }
9441
9560
  } else {
@@ -9493,26 +9612,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
9493
9612
  if (reactData.scrollYLoad) {
9494
9613
  $xeTable.updateScrollYSpace();
9495
9614
  }
9496
- (0, _vue.nextTick)().then(() => {
9615
+ if (evnt) {
9616
+ dispatchEvent('row-dragend', {
9617
+ oldRow: dragRow,
9618
+ newRow: prevDragRow,
9619
+ dragRow,
9620
+ dragPos: prevDragPos,
9621
+ dragToChild: isDragToChildFlag,
9622
+ offsetIndex: dragOffsetIndex,
9623
+ _index: {
9624
+ newIndex: nafIndex,
9625
+ oldIndex: oafIndex
9626
+ }
9627
+ }, evnt);
9628
+ }
9629
+ return (0, _vue.nextTick)().then(() => {
9497
9630
  $xeTable.updateCellAreas();
9498
9631
  $xeTable.recalculate();
9632
+ }).then(() => {
9633
+ return {
9634
+ status: true
9635
+ };
9499
9636
  });
9500
- dispatchEvent('row-dragend', {
9501
- oldRow: dragRow,
9502
- newRow: prevDragRow,
9503
- dragRow,
9504
- dragPos: prevDragPos,
9505
- dragToChild: isDragToChildFlag,
9506
- offsetIndex: dragOffsetIndex,
9507
- _index: {
9508
- newIndex: nafIndex,
9509
- oldIndex: oafIndex
9510
- }
9511
- }, evnt);
9512
- }).catch(() => {});
9637
+ }).catch(() => {
9638
+ return errRest;
9639
+ });
9513
9640
  }
9514
9641
  }
9515
- return Promise.resolve();
9642
+ return Promise.resolve(errRest);
9516
9643
  },
9517
9644
  handleRowDragDragendEvent(evnt) {
9518
9645
  const {
@@ -9681,6 +9808,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9681
9808
  collectColumn
9682
9809
  } = internalData;
9683
9810
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
9811
+ const errRest = {
9812
+ status: false
9813
+ };
9684
9814
  if (prevDragCol && dragCol) {
9685
9815
  // 判断是否有拖动
9686
9816
  if (prevDragCol !== dragCol) {
@@ -9697,7 +9827,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9697
9827
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9698
9828
  return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
9699
9829
  if (!status) {
9700
- return;
9830
+ return errRest;
9701
9831
  }
9702
9832
  let oafIndex = -1;
9703
9833
  let nafIndex = -1;
@@ -9711,11 +9841,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9711
9841
  if (isPeerDrag && !isCrossDrag) {
9712
9842
  if (dragColumn.parentId !== newColumn.parentId) {
9713
9843
  // 非同级
9714
- return;
9844
+ return errRest;
9715
9845
  }
9716
9846
  } else {
9717
9847
  if (!isCrossDrag) {
9718
- return;
9848
+ return errRest;
9719
9849
  }
9720
9850
  if (oldAllMaps[newColumn.id]) {
9721
9851
  isSelfToChildStatus = true;
@@ -9726,19 +9856,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9726
9856
  content: getI18n('vxe.error.treeDragChild')
9727
9857
  });
9728
9858
  }
9729
- return;
9859
+ return errRest;
9730
9860
  }
9731
9861
  }
9732
9862
  }
9733
9863
  } else if (dragColumn.parentId) {
9734
9864
  // 子到根
9735
9865
  if (!isCrossDrag) {
9736
- return;
9866
+ return errRest;
9737
9867
  }
9738
9868
  } else if (newColumn.parentId) {
9739
9869
  // 根到子
9740
9870
  if (!isCrossDrag) {
9741
- return;
9871
+ return errRest;
9742
9872
  }
9743
9873
  if (oldAllMaps[newColumn.id]) {
9744
9874
  isSelfToChildStatus = true;
@@ -9749,7 +9879,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9749
9879
  content: getI18n('vxe.error.treeDragChild')
9750
9880
  });
9751
9881
  }
9752
- return;
9882
+ return errRest;
9753
9883
  }
9754
9884
  }
9755
9885
  } else {
@@ -9818,25 +9948,32 @@ var _default = exports.default = (0, _vue.defineComponent)({
9818
9948
  $xeTable.clearCopyCellArea();
9819
9949
  }
9820
9950
  }
9821
- dispatchEvent('column-dragend', {
9822
- oldColumn: dragColumn,
9823
- newColumn,
9824
- dragColumn,
9825
- dragPos: prevDragPos,
9826
- dragToChild: isDragToChildFlag,
9827
- offsetIndex: dragOffsetIndex,
9828
- _index: {
9829
- newIndex: nafIndex,
9830
- oldIndex: oafIndex
9831
- }
9832
- }, evnt);
9951
+ if (evnt) {
9952
+ dispatchEvent('column-dragend', {
9953
+ oldColumn: dragColumn,
9954
+ newColumn,
9955
+ dragColumn,
9956
+ dragPos: prevDragPos,
9957
+ dragToChild: isDragToChildFlag,
9958
+ offsetIndex: dragOffsetIndex,
9959
+ _index: {
9960
+ newIndex: nafIndex,
9961
+ oldIndex: oafIndex
9962
+ }
9963
+ }, evnt);
9964
+ }
9833
9965
  if (isSyncColumn) {
9834
9966
  $xeTable.handleColDragSwapColumn();
9835
9967
  }
9836
- }).catch(() => {});
9968
+ return {
9969
+ status: true
9970
+ };
9971
+ }).catch(() => {
9972
+ return errRest;
9973
+ });
9837
9974
  }
9838
9975
  }
9839
- return Promise.resolve();
9976
+ return Promise.resolve(errRest);
9840
9977
  },
9841
9978
  handleHeaderCellDragDragendEvent(evnt) {
9842
9979
  const {