vxe-table 4.12.0-beta.2 → 4.12.0-beta.20

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 (152) hide show
  1. package/es/grid/src/grid.js +61 -44
  2. package/es/locale/lang/ar-EG.js +7 -1
  3. package/es/locale/lang/de-DE.js +7 -1
  4. package/es/locale/lang/en-US.js +7 -1
  5. package/es/locale/lang/es-ES.js +7 -1
  6. package/es/locale/lang/fr-FR.js +7 -1
  7. package/es/locale/lang/hu-HU.js +7 -1
  8. package/es/locale/lang/hy-AM.js +7 -1
  9. package/es/locale/lang/id-ID.js +7 -1
  10. package/es/locale/lang/it-IT.js +7 -1
  11. package/es/locale/lang/ja-JP.js +7 -1
  12. package/es/locale/lang/ko-KR.js +7 -1
  13. package/es/locale/lang/nb-NO.js +7 -1
  14. package/es/locale/lang/pt-BR.js +7 -1
  15. package/es/locale/lang/ru-RU.js +7 -1
  16. package/es/locale/lang/th-TH.js +7 -1
  17. package/es/locale/lang/ug-CN.js +7 -1
  18. package/es/locale/lang/uk-UA.js +7 -1
  19. package/es/locale/lang/vi-VN.js +7 -1
  20. package/es/locale/lang/zh-CHT.js +7 -1
  21. package/es/locale/lang/zh-CN.js +7 -1
  22. package/es/style.css +1 -1
  23. package/es/table/module/filter/panel.js +12 -2
  24. package/es/table/module/keyboard/hook.js +47 -4
  25. package/es/table/render/index.js +91 -60
  26. package/es/table/src/body.js +12 -7
  27. package/es/table/src/cell.js +10 -9
  28. package/es/table/src/footer.js +9 -4
  29. package/es/table/src/header.js +2 -2
  30. package/es/table/src/props.js +4 -0
  31. package/es/table/src/table.js +366 -182
  32. package/es/table/src/util.js +58 -3
  33. package/es/ui/index.js +1 -1
  34. package/es/ui/src/log.js +1 -1
  35. package/helper/vetur/attributes.json +1 -1
  36. package/helper/vetur/tags.json +1 -1
  37. package/lib/grid/src/grid.js +58 -48
  38. package/lib/grid/src/grid.min.js +1 -1
  39. package/lib/index.umd.js +1245 -12123
  40. package/lib/index.umd.min.js +1 -1
  41. package/lib/locale/lang/ar-EG.js +7 -1
  42. package/lib/locale/lang/ar-EG.min.js +1 -1
  43. package/lib/locale/lang/de-DE.js +7 -1
  44. package/lib/locale/lang/de-DE.min.js +1 -1
  45. package/lib/locale/lang/en-US.js +7 -1
  46. package/lib/locale/lang/en-US.min.js +1 -1
  47. package/lib/locale/lang/en-US.umd.js +7 -1
  48. package/lib/locale/lang/es-ES.js +7 -1
  49. package/lib/locale/lang/es-ES.min.js +1 -1
  50. package/lib/locale/lang/es-ES.umd.js +7 -1
  51. package/lib/locale/lang/fr-FR.js +7 -1
  52. package/lib/locale/lang/fr-FR.min.js +1 -1
  53. package/lib/locale/lang/hu-HU.js +7 -1
  54. package/lib/locale/lang/hu-HU.min.js +1 -1
  55. package/lib/locale/lang/hu-HU.umd.js +7 -1
  56. package/lib/locale/lang/hy-AM.js +7 -1
  57. package/lib/locale/lang/hy-AM.min.js +1 -1
  58. package/lib/locale/lang/id-ID.js +7 -1
  59. package/lib/locale/lang/id-ID.min.js +1 -1
  60. package/lib/locale/lang/it-IT.js +7 -1
  61. package/lib/locale/lang/it-IT.min.js +1 -1
  62. package/lib/locale/lang/ja-JP.js +7 -1
  63. package/lib/locale/lang/ja-JP.min.js +1 -1
  64. package/lib/locale/lang/ja-JP.umd.js +7 -1
  65. package/lib/locale/lang/ko-KR.js +7 -1
  66. package/lib/locale/lang/ko-KR.min.js +1 -1
  67. package/lib/locale/lang/ko-KR.umd.js +7 -1
  68. package/lib/locale/lang/nb-NO.js +7 -1
  69. package/lib/locale/lang/nb-NO.min.js +1 -1
  70. package/lib/locale/lang/pt-BR.js +7 -1
  71. package/lib/locale/lang/pt-BR.min.js +1 -1
  72. package/lib/locale/lang/pt-BR.umd.js +7 -1
  73. package/lib/locale/lang/ru-RU.js +7 -1
  74. package/lib/locale/lang/ru-RU.min.js +1 -1
  75. package/lib/locale/lang/ru-RU.umd.js +7 -1
  76. package/lib/locale/lang/th-TH.js +7 -1
  77. package/lib/locale/lang/th-TH.min.js +1 -1
  78. package/lib/locale/lang/ug-CN.js +7 -1
  79. package/lib/locale/lang/ug-CN.min.js +1 -1
  80. package/lib/locale/lang/uk-UA.js +7 -1
  81. package/lib/locale/lang/uk-UA.min.js +1 -1
  82. package/lib/locale/lang/uk-UA.umd.js +7 -1
  83. package/lib/locale/lang/vi-VN.js +7 -1
  84. package/lib/locale/lang/vi-VN.min.js +1 -1
  85. package/lib/locale/lang/zh-CHT.js +7 -1
  86. package/lib/locale/lang/zh-CHT.min.js +1 -1
  87. package/lib/locale/lang/zh-CN.js +7 -1
  88. package/lib/locale/lang/zh-CN.min.js +1 -1
  89. package/lib/locale/lang/zh-CN.umd.js +7 -1
  90. package/lib/style.css +1 -1
  91. package/lib/table/module/filter/panel.js +8 -2
  92. package/lib/table/module/filter/panel.min.js +1 -1
  93. package/lib/table/module/keyboard/hook.js +51 -4
  94. package/lib/table/module/keyboard/hook.min.js +1 -1
  95. package/lib/table/render/index.js +100 -65
  96. package/lib/table/render/index.min.js +1 -1
  97. package/lib/table/src/body.js +11 -6
  98. package/lib/table/src/body.min.js +1 -1
  99. package/lib/table/src/cell.js +15 -8
  100. package/lib/table/src/cell.min.js +1 -1
  101. package/lib/table/src/footer.js +9 -3
  102. package/lib/table/src/footer.min.js +1 -1
  103. package/lib/table/src/header.js +2 -1
  104. package/lib/table/src/header.min.js +1 -1
  105. package/lib/table/src/props.js +4 -0
  106. package/lib/table/src/props.min.js +1 -1
  107. package/lib/table/src/table.js +402 -188
  108. package/lib/table/src/table.min.js +1 -1
  109. package/lib/table/src/util.js +65 -6
  110. package/lib/table/src/util.min.js +1 -1
  111. package/lib/ui/index.js +1 -1
  112. package/lib/ui/index.min.js +1 -1
  113. package/lib/ui/src/log.js +1 -1
  114. package/lib/ui/src/log.min.js +1 -1
  115. package/package.json +2 -2
  116. package/packages/grid/src/grid.ts +65 -50
  117. package/packages/locale/lang/ar-EG.ts +7 -1
  118. package/packages/locale/lang/de-DE.ts +7 -1
  119. package/packages/locale/lang/en-US.ts +7 -1
  120. package/packages/locale/lang/es-ES.ts +7 -1
  121. package/packages/locale/lang/fr-FR.ts +7 -1
  122. package/packages/locale/lang/hu-HU.ts +7 -1
  123. package/packages/locale/lang/hy-AM.ts +7 -1
  124. package/packages/locale/lang/id-ID.ts +7 -1
  125. package/packages/locale/lang/it-IT.ts +7 -1
  126. package/packages/locale/lang/ja-JP.ts +7 -1
  127. package/packages/locale/lang/ko-KR.ts +7 -1
  128. package/packages/locale/lang/nb-NO.ts +7 -1
  129. package/packages/locale/lang/pt-BR.ts +7 -1
  130. package/packages/locale/lang/ru-RU.ts +7 -1
  131. package/packages/locale/lang/th-TH.ts +7 -1
  132. package/packages/locale/lang/ug-CN.ts +7 -1
  133. package/packages/locale/lang/uk-UA.ts +7 -1
  134. package/packages/locale/lang/vi-VN.ts +7 -1
  135. package/packages/locale/lang/zh-CHT.ts +7 -1
  136. package/packages/locale/lang/zh-CN.ts +7 -1
  137. package/packages/table/module/filter/panel.ts +12 -2
  138. package/packages/table/module/keyboard/hook.ts +47 -6
  139. package/packages/table/render/index.ts +90 -59
  140. package/packages/table/src/body.ts +11 -6
  141. package/packages/table/src/cell.ts +10 -9
  142. package/packages/table/src/footer.ts +9 -4
  143. package/packages/table/src/header.ts +2 -2
  144. package/packages/table/src/props.ts +4 -0
  145. package/packages/table/src/table.ts +373 -183
  146. package/packages/table/src/util.ts +66 -3
  147. /package/es/{iconfont.1741080000843.ttf → iconfont.1742353689933.ttf} +0 -0
  148. /package/es/{iconfont.1741080000843.woff → iconfont.1742353689933.woff} +0 -0
  149. /package/es/{iconfont.1741080000843.woff2 → iconfont.1742353689933.woff2} +0 -0
  150. /package/lib/{iconfont.1741080000843.ttf → iconfont.1742353689933.ttf} +0 -0
  151. /package/lib/{iconfont.1741080000843.woff → iconfont.1742353689933.woff} +0 -0
  152. /package/lib/{iconfont.1741080000843.woff2 → iconfont.1742353689933.woff2} +0 -0
@@ -39,6 +39,7 @@ const {
39
39
  useFns,
40
40
  renderEmptyElement
41
41
  } = _ui.VxeUI;
42
+ const supportMaxRow = 5e6;
42
43
  const customStorageKey = 'VXE_CUSTOM_STORE';
43
44
  const maxYHeight = 5e6;
44
45
  const maxXWidth = 5e6;
@@ -499,6 +500,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
499
500
  const computeColumnOpts = (0, _vue.computed)(() => {
500
501
  return Object.assign({}, getConfig().table.columnConfig, props.columnConfig);
501
502
  });
503
+ const computeCurrentColumnOpts = (0, _vue.computed)(() => {
504
+ return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig);
505
+ });
502
506
  const computeCellOpts = (0, _vue.computed)(() => {
503
507
  return Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
504
508
  });
@@ -511,6 +515,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
511
515
  const computeRowOpts = (0, _vue.computed)(() => {
512
516
  return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
513
517
  });
518
+ const computeCurrentRowOpts = (0, _vue.computed)(() => {
519
+ return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig);
520
+ });
514
521
  const computeRowDragOpts = (0, _vue.computed)(() => {
515
522
  return Object.assign({}, getConfig().table.rowDragConfig, props.rowDragConfig);
516
523
  });
@@ -817,6 +824,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
817
824
  computeScrollbarXToTop,
818
825
  computeScrollbarYToLeft,
819
826
  computeColumnOpts,
827
+ computeCurrentColumnOpts,
820
828
  computeScrollXThreshold,
821
829
  computeScrollYThreshold,
822
830
  computeDefaultRowHeight,
@@ -824,6 +832,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
824
832
  computeHeaderCellOpts,
825
833
  computeFooterCellOpts,
826
834
  computeRowOpts,
835
+ computeCurrentRowOpts,
827
836
  computeRowDragOpts,
828
837
  computeColumnDragOpts,
829
838
  computeResizeOpts,
@@ -1375,7 +1384,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1375
1384
  fullColumnFieldData[field] = rest;
1376
1385
  } else {
1377
1386
  if (storage && !type || columnOpts.drag && (isCrossDrag || isSelfToChildDrag)) {
1378
- (0, _log.errLog)('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field`]);
1387
+ (0, _log.errLog)('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`]);
1379
1388
  }
1380
1389
  }
1381
1390
  if (!hasFixed && fixed) {
@@ -2628,6 +2637,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
2628
2637
  reserve,
2629
2638
  checkMethod
2630
2639
  } = checkboxOpts;
2640
+ const {
2641
+ handleGetRowId
2642
+ } = (0, _util.createHandleGetRowId)($xeTable);
2643
+ // indeterminateField 仅支持读取
2631
2644
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
2632
2645
  const selectRowMaps = {};
2633
2646
  /**
@@ -2672,7 +2685,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
2672
2685
  if (isForce || !checkMethod || checkMethod({
2673
2686
  row
2674
2687
  })) {
2675
- selectRowMaps[(0, _util.getRowid)($xeTable, row)] = row;
2688
+ const rowid = handleGetRowId(row);
2689
+ selectRowMaps[rowid] = row;
2676
2690
  }
2677
2691
  }, {
2678
2692
  children: childrenField
@@ -2684,7 +2698,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2684
2698
  */
2685
2699
  if (!isForce && checkMethod) {
2686
2700
  _xeUtils.default.eachTree(afterFullData, row => {
2687
- const rowid = (0, _util.getRowid)($xeTable, row);
2701
+ const rowid = handleGetRowId(row);
2688
2702
  if (checkMethod({
2689
2703
  row
2690
2704
  }) ? 0 : selectCheckboxMaps[rowid]) {
@@ -2704,7 +2718,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2704
2718
  */
2705
2719
  if (!isForce && checkMethod) {
2706
2720
  afterFullData.forEach(row => {
2707
- const rowid = (0, _util.getRowid)($xeTable, row);
2721
+ const rowid = handleGetRowId(row);
2708
2722
  if (selectCheckboxMaps[rowid] || checkMethod({
2709
2723
  row
2710
2724
  })) {
@@ -2713,7 +2727,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
2713
2727
  });
2714
2728
  } else {
2715
2729
  afterFullData.forEach(row => {
2716
- selectRowMaps[(0, _util.getRowid)($xeTable, row)] = row;
2730
+ const rowid = handleGetRowId(row);
2731
+ selectRowMaps[rowid] = row;
2717
2732
  });
2718
2733
  }
2719
2734
  } else {
@@ -2724,7 +2739,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2724
2739
  */
2725
2740
  if (!isForce && checkMethod) {
2726
2741
  afterFullData.forEach(row => {
2727
- const rowid = (0, _util.getRowid)($xeTable, row);
2742
+ const rowid = handleGetRowId(row);
2728
2743
  if (checkMethod({
2729
2744
  row
2730
2745
  }) ? 0 : selectCheckboxMaps[rowid]) {
@@ -3120,7 +3135,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
3120
3135
  } = treeOpts;
3121
3136
  const childrenField = treeOpts.children || treeOpts.childrenField;
3122
3137
  let treeData = [];
3123
- let fullData = (0, _vue.reactive)(datas ? datas.slice(0) : []); // 转为响应式
3138
+ let fullData = (0, _vue.reactive)(datas ? datas.slice(0) : []); // 转为响应式数据
3139
+ if (fullData.length > supportMaxRow) {
3140
+ (0, _log.errLog)('vxe.error.errMaxRow', [supportMaxRow]);
3141
+ }
3124
3142
  if (treeConfig) {
3125
3143
  if (transform) {
3126
3144
  // 树结构自动转换
@@ -3214,7 +3232,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3214
3232
  // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3215
3233
  // }
3216
3234
  if (props.spanMethod) {
3217
- (0, _log.warnLog)('vxe.error.scrollErrProp', ['table.span-method']);
3235
+ (0, _log.errLog)('vxe.error.scrollErrProp', ['table.span-method']);
3218
3236
  }
3219
3237
  }
3220
3238
  handleReserveStatus();
@@ -3661,9 +3679,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
3661
3679
  handleCheckedAllCheckboxRow(value);
3662
3680
  if (evnt) {
3663
3681
  dispatchEvent('checkbox-all', {
3664
- records: $xeTable.getCheckboxRecords(),
3665
- reserves: $xeTable.getCheckboxReserveRecords(),
3666
- indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
3682
+ records: () => $xeTable.getCheckboxRecords(),
3683
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
3684
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
3667
3685
  checked: value
3668
3686
  }, evnt);
3669
3687
  }
@@ -4018,6 +4036,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4018
4036
  };
4019
4037
  tableMethods = {
4020
4038
  dispatchEvent,
4039
+ getEl() {
4040
+ return refElem.value;
4041
+ },
4021
4042
  /**
4022
4043
  * 重置表格的一切数据状态
4023
4044
  */
@@ -4364,20 +4385,25 @@ var _default = exports.default = (0, _vue.defineComponent)({
4364
4385
  keepSource,
4365
4386
  treeConfig
4366
4387
  } = props;
4388
+ const {
4389
+ editStore
4390
+ } = reactData;
4367
4391
  const {
4368
4392
  fullAllDataRowIdData,
4393
+ fullDataRowIdData,
4369
4394
  tableSourceData,
4370
4395
  sourceDataRowIdData,
4371
4396
  tableFullData,
4372
4397
  afterFullData
4373
4398
  } = internalData;
4399
+ const removeTempMaps = Object.assign({}, editStore.removeMaps);
4374
4400
  const treeOpts = computeTreeOpts.value;
4375
4401
  const {
4376
4402
  transform
4377
4403
  } = treeOpts;
4378
4404
  if (!keepSource) {
4379
4405
  if (process.env.NODE_ENV === 'development') {
4380
- (0, _log.warnLog)('vxe.error.reqProp', ['keep-source']);
4406
+ (0, _log.errLog)('vxe.error.reqProp', ['keep-source']);
4381
4407
  }
4382
4408
  return (0, _vue.nextTick)();
4383
4409
  }
@@ -4391,22 +4417,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
4391
4417
  }
4392
4418
  let reDelFlag = false;
4393
4419
  if (targetRows.length) {
4394
- targetRows.forEach(row => {
4395
- if (!$xeTable.isInsertByRow(row)) {
4396
- const rowid = (0, _util.getRowid)($xeTable, row);
4397
- const oRow = sourceDataRowIdData[rowid];
4398
- if (oRow && row) {
4399
- if (field) {
4400
- _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4401
- } else {
4402
- _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4403
- }
4404
- if ($xeTable.isRemoveByRow(row)) {
4405
- const rowRest = fullAllDataRowIdData[rowid];
4406
- if (rowRest) {
4407
- const reRow = rowRest.row;
4408
- tableFullData.unshift(reRow);
4409
- afterFullData.unshift(reRow);
4420
+ targetRows.forEach(item => {
4421
+ const rowid = (0, _util.getRowid)($xeTable, item);
4422
+ const rowRest = fullAllDataRowIdData[rowid];
4423
+ if (rowRest) {
4424
+ const row = rowRest.row;
4425
+ if (!$xeTable.isInsertByRow(row)) {
4426
+ const oRow = sourceDataRowIdData[rowid];
4427
+ if (oRow && row) {
4428
+ if (field) {
4429
+ _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4430
+ } else {
4431
+ _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4432
+ }
4433
+ if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
4434
+ delete removeTempMaps[rowid];
4435
+ tableFullData.unshift(row);
4436
+ afterFullData.unshift(row);
4410
4437
  reDelFlag = true;
4411
4438
  }
4412
4439
  }
@@ -4416,6 +4443,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4416
4443
  }
4417
4444
  if (rows) {
4418
4445
  if (reDelFlag) {
4446
+ editStore.removeMaps = removeTempMaps;
4419
4447
  $xeTable.updateFooter();
4420
4448
  $xeTable.cacheRowMap(false);
4421
4449
  $xeTable.handleTableData(treeConfig && transform);
@@ -4585,10 +4613,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
4585
4613
  },
4586
4614
  /**
4587
4615
  * 检查行或列数据是否发生改变
4588
- * @param {Row} row 行对象
4616
+ * @param {Row} rowidOrRow 行对象、行主键
4589
4617
  * @param {String} field 字段名
4590
4618
  */
4591
- isUpdateByRow(row, field) {
4619
+ isUpdateByRow(rowidOrRow, field) {
4592
4620
  const {
4593
4621
  keepSource
4594
4622
  } = props;
@@ -4598,11 +4626,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
4598
4626
  sourceDataRowIdData
4599
4627
  } = internalData;
4600
4628
  if (keepSource) {
4601
- const rowid = (0, _util.getRowid)($xeTable, row);
4629
+ const rowid = _xeUtils.default.isString(rowidOrRow) || _xeUtils.default.isNumber(rowidOrRow) ? rowidOrRow : (0, _util.getRowid)($xeTable, rowidOrRow);
4630
+ const rowRest = fullDataRowIdData[rowid];
4602
4631
  // 新增的数据不需要检测
4603
- if (!fullDataRowIdData[rowid]) {
4632
+ if (!rowRest) {
4604
4633
  return false;
4605
4634
  }
4635
+ const row = rowRest.row;
4606
4636
  const oRow = sourceDataRowIdData[rowid];
4607
4637
  if (oRow) {
4608
4638
  if (arguments.length > 1) {
@@ -4666,6 +4696,108 @@ var _default = exports.default = (0, _vue.defineComponent)({
4666
4696
  tableColumn: reactData.tableColumn.slice(0)
4667
4697
  };
4668
4698
  },
4699
+ /**
4700
+ * 移动列到指定列的位置
4701
+ * @param fieldOrColumn
4702
+ * @param targetFieldOrColumn
4703
+ * @param options
4704
+ */
4705
+ moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
4706
+ const {
4707
+ fullColumnIdData,
4708
+ visibleColumn
4709
+ } = internalData;
4710
+ const {
4711
+ dragToChild,
4712
+ dragPos,
4713
+ isCrossDrag
4714
+ } = Object.assign({}, options);
4715
+ const dragCol = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4716
+ let prevDragCol = null;
4717
+ const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
4718
+ let defPos = 'left';
4719
+ if (_xeUtils.default.isNumber(targetFieldOrColumn)) {
4720
+ if (colRest && targetFieldOrColumn) {
4721
+ let currList = colRest.items;
4722
+ let offsetIndex = colRest._index + targetFieldOrColumn;
4723
+ if (isCrossDrag) {
4724
+ currList = visibleColumn;
4725
+ offsetIndex = colRest._index + targetFieldOrColumn;
4726
+ }
4727
+ if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
4728
+ prevDragCol = currList[offsetIndex];
4729
+ }
4730
+ if (targetFieldOrColumn > 0) {
4731
+ defPos = 'right';
4732
+ }
4733
+ }
4734
+ } else {
4735
+ prevDragCol = (0, _util.handleFieldOrColumn)($xeTable, targetFieldOrColumn);
4736
+ const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
4737
+ if (colRest && targetColRest) {
4738
+ if (targetColRest._index > colRest._index) {
4739
+ defPos = 'right';
4740
+ }
4741
+ }
4742
+ }
4743
+ return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
4744
+ },
4745
+ /**
4746
+ * 移动行到指定行的位置
4747
+ * @param rowidOrRow
4748
+ * @param targetRowidOrRow
4749
+ * @param options
4750
+ */
4751
+ moveRowTo(rowidOrRow, targetRowidOrRow, options) {
4752
+ const {
4753
+ treeConfig
4754
+ } = props;
4755
+ const {
4756
+ fullAllDataRowIdData,
4757
+ afterFullData
4758
+ } = internalData;
4759
+ const {
4760
+ dragToChild,
4761
+ dragPos,
4762
+ isCrossDrag
4763
+ } = Object.assign({}, options);
4764
+ const treeOpts = computeTreeOpts.value;
4765
+ const dragRow = (0, _util.handleRowidOrRow)($xeTable, rowidOrRow);
4766
+ let prevDragRow = null;
4767
+ let defPos = 'top';
4768
+ const rowRest = dragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, dragRow)] : null;
4769
+ if (_xeUtils.default.isNumber(targetRowidOrRow)) {
4770
+ if (rowRest && targetRowidOrRow) {
4771
+ let currList = afterFullData;
4772
+ let offsetIndex = rowRest._index + targetRowidOrRow;
4773
+ if (treeConfig) {
4774
+ currList = rowRest.items;
4775
+ if (treeOpts.transform) {
4776
+ offsetIndex = rowRest.treeIndex + targetRowidOrRow;
4777
+ if (isCrossDrag) {
4778
+ currList = afterFullData;
4779
+ offsetIndex = rowRest._index + targetRowidOrRow;
4780
+ }
4781
+ }
4782
+ }
4783
+ if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
4784
+ prevDragRow = currList[offsetIndex];
4785
+ }
4786
+ if (targetRowidOrRow > 0) {
4787
+ defPos = 'bottom';
4788
+ }
4789
+ }
4790
+ } else {
4791
+ prevDragRow = (0, _util.handleRowidOrRow)($xeTable, targetRowidOrRow);
4792
+ const targetRowRest = prevDragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, prevDragRow)] : null;
4793
+ if (rowRest && targetRowRest) {
4794
+ if (targetRowRest._index > rowRest._index) {
4795
+ defPos = 'bottom';
4796
+ }
4797
+ }
4798
+ }
4799
+ return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
4800
+ },
4669
4801
  /**
4670
4802
  * 获取表格的全量列
4671
4803
  */
@@ -4689,6 +4821,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4689
4821
  const {
4690
4822
  treeConfig
4691
4823
  } = props;
4824
+ const {
4825
+ selectCheckboxMaps
4826
+ } = reactData;
4692
4827
  const {
4693
4828
  tableFullData,
4694
4829
  afterFullData,
@@ -4708,19 +4843,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
4708
4843
  } = checkboxOpts;
4709
4844
  const childrenField = treeOpts.children || treeOpts.childrenField;
4710
4845
  let rowList = [];
4711
- const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4712
4846
  if (checkField) {
4713
4847
  if (treeConfig) {
4848
+ const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4714
4849
  rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4715
4850
  children: transform ? mapChildrenField : childrenField
4716
4851
  });
4717
4852
  } else {
4853
+ const currTableData = isFull ? tableFullData : afterFullData;
4718
4854
  rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4719
4855
  }
4720
4856
  } else {
4721
- const {
4722
- selectCheckboxMaps
4723
- } = reactData;
4724
4857
  _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4725
4858
  if (isFull) {
4726
4859
  if (fullDataRowIdData[rowid]) {
@@ -5503,6 +5636,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5503
5636
  checkField,
5504
5637
  reserve
5505
5638
  } = checkboxOpts;
5639
+ // indeterminateField 仅支持读取
5506
5640
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5507
5641
  if (checkField) {
5508
5642
  const handleClearChecked = item => {
@@ -5643,13 +5777,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
5643
5777
  * 用于当前列,设置某列行为高亮状态
5644
5778
  */
5645
5779
  setCurrentColumn(fieldOrColumn) {
5780
+ const {
5781
+ mouseConfig
5782
+ } = props;
5783
+ const mouseOpts = computeMouseOpts.value;
5784
+ const isMouseSelected = mouseConfig && mouseOpts.selected;
5646
5785
  const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
5647
5786
  if (column) {
5648
- // tableMethods.clearCurrentRow()
5649
- tableMethods.clearCurrentColumn();
5787
+ $xeTable.clearCurrentColumn();
5650
5788
  reactData.currentColumn = column;
5651
5789
  }
5652
- return (0, _vue.nextTick)();
5790
+ return (0, _vue.nextTick)().then(() => {
5791
+ // 更新状选中态
5792
+ if (isMouseSelected) {
5793
+ $xeTable.addCellSelectedClass();
5794
+ }
5795
+ });
5653
5796
  },
5654
5797
  /**
5655
5798
  * 用于当前列,手动清空当前高亮的状态
@@ -5911,7 +6054,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5911
6054
  column,
5912
6055
  property: column.field,
5913
6056
  field: column.field,
5914
- filterList: $xeTable.getCheckedFilters(),
6057
+ filterList: () => $xeTable.getCheckedFilters(),
5915
6058
  visible: false
5916
6059
  }, null);
5917
6060
  }
@@ -6634,8 +6777,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
6634
6777
  collectColumn
6635
6778
  } = internalData;
6636
6779
  const {
6780
+ storage,
6637
6781
  checkMethod
6638
6782
  } = customOpts;
6783
+ const isAllCustom = storage === true;
6784
+ const storageOpts = isAllCustom ? {} : Object.assign({}, storage || {});
6785
+ const isCustomResizable = isAllCustom || storageOpts.resizable;
6786
+ const isCustomVisible = isAllCustom || storageOpts.visible;
6787
+ const isCustomFixed = isAllCustom || storageOpts.fixed;
6788
+ const isCustomSort = isAllCustom || storageOpts.sort;
6639
6789
  const resizableData = {};
6640
6790
  const sortData = {};
6641
6791
  const visibleData = {};
@@ -6655,45 +6805,35 @@ var _default = exports.default = (0, _vue.defineComponent)({
6655
6805
  let hasFixed = 0;
6656
6806
  let hasVisible = 0;
6657
6807
  _xeUtils.default.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
6808
+ const colKey = column.getKey();
6809
+ if (!colKey) {
6810
+ (0, _log.errLog)('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`]);
6811
+ return;
6812
+ }
6658
6813
  // 只支持一级
6659
6814
  if (!parentColumn) {
6660
- collectColumn.forEach(column => {
6661
- const colKey = column.getKey();
6662
- if (colKey) {
6663
- hasSort = 1;
6664
- sortData[colKey] = column.renderSortNumber;
6665
- }
6666
- });
6667
- if (column.fixed !== column.defaultFixed) {
6668
- const colKey = column.getKey();
6669
- if (colKey) {
6670
- hasFixed = 1;
6671
- fixedData[colKey] = column.fixed;
6672
- }
6815
+ if (isCustomSort) {
6816
+ hasSort = 1;
6817
+ sortData[colKey] = column.renderSortNumber;
6673
6818
  }
6674
- }
6675
- if (column.resizeWidth) {
6676
- const colKey = column.getKey();
6677
- if (colKey) {
6678
- hasResizable = 1;
6679
- resizableData[colKey] = column.renderWidth;
6819
+ if (isCustomFixed && column.fixed !== column.defaultFixed) {
6820
+ hasFixed = 1;
6821
+ fixedData[colKey] = column.fixed;
6680
6822
  }
6681
6823
  }
6682
- if (!checkMethod || checkMethod({
6824
+ if (isCustomResizable && column.resizeWidth) {
6825
+ hasResizable = 1;
6826
+ resizableData[colKey] = column.renderWidth;
6827
+ }
6828
+ if (isCustomVisible && (!checkMethod || checkMethod({
6683
6829
  column
6684
- })) {
6830
+ }))) {
6685
6831
  if (!column.visible && column.defaultVisible) {
6686
- const colKey = column.getKey();
6687
- if (colKey) {
6688
- hasVisible = 1;
6689
- visibleData[colKey] = false;
6690
- }
6832
+ hasVisible = 1;
6833
+ visibleData[colKey] = false;
6691
6834
  } else if (column.visible && !column.defaultVisible) {
6692
- const colKey = column.getKey();
6693
- if (colKey) {
6694
- hasVisible = 1;
6695
- visibleData[colKey] = true;
6696
- }
6835
+ hasVisible = 1;
6836
+ visibleData[colKey] = true;
6697
6837
  }
6698
6838
  }
6699
6839
  });
@@ -6957,7 +7097,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
6957
7097
  keyboardConfig,
6958
7098
  treeConfig,
6959
7099
  editConfig,
6960
- highlightCurrentRow
7100
+ highlightCurrentRow,
7101
+ highlightCurrentColumn
6961
7102
  } = props;
6962
7103
  const {
6963
7104
  ctxMenuStore,
@@ -6975,6 +7116,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
6975
7116
  const treeOpts = computeTreeOpts.value;
6976
7117
  const menuList = computeMenuList.value;
6977
7118
  const rowOpts = computeRowOpts.value;
7119
+ const columnOpts = computeColumnOpts.value;
6978
7120
  const {
6979
7121
  selected,
6980
7122
  actived
@@ -7142,10 +7284,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
7142
7284
  // 如果按下了方向键
7143
7285
  if (selected.row && selected.column) {
7144
7286
  $xeTable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
7145
- } else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
7146
- // 当前行按键上下移动
7287
+ }
7288
+ // 当前行按键上下移动
7289
+ if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
7147
7290
  $xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
7148
7291
  }
7292
+ // 当前行按键左右移动
7293
+ if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
7294
+ $xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
7295
+ }
7149
7296
  }
7150
7297
  } else if (isTab && keyboardConfig && keyboardOpts.isTab) {
7151
7298
  // 如果按下了 Tab 键切换
@@ -7648,7 +7795,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
7648
7795
  if (el) {
7649
7796
  const parentElem = el.parentNode;
7650
7797
  const parentPaddingSize = height === '100%' || height === 'auto' ? (0, _dom.getPaddingTopBottomSize)(parentElem) : 0;
7651
- return Math.floor($xeGrid ? $xeGrid.getParentHeight() : _xeUtils.default.toNumber(getComputedStyle(parentElem).height) - parentPaddingSize);
7798
+ let parentWrapperHeight = 0;
7799
+ if (parentElem) {
7800
+ if ($xeGrid && (0, _dom.hasClass)(parentElem, 'vxe-grid--table-wrapper')) {
7801
+ parentWrapperHeight = $xeGrid.getParentHeight();
7802
+ } else {
7803
+ parentWrapperHeight = parentElem.clientHeight;
7804
+ }
7805
+ }
7806
+ return Math.floor(parentWrapperHeight - parentPaddingSize);
7652
7807
  }
7653
7808
  return 0;
7654
7809
  },
@@ -7761,30 +7916,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
7761
7916
  const treeOpts = computeTreeOpts.value;
7762
7917
  const childrenField = treeOpts.children || treeOpts.childrenField;
7763
7918
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
7764
- const rowkey = (0, _util.getRowkey)($xeTable);
7919
+ const {
7920
+ lazy
7921
+ } = treeOpts;
7765
7922
  const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
7766
7923
  const fullDataRowIdMaps = {};
7767
7924
  const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
7768
- const handleRow = (row, index, items, path, parentRow, nodes) => {
7769
- let rowid = (0, _util.getRowid)($xeTable, row);
7770
- const seq = treeConfig && path ? (0, _util.toTreePathSeq)(path) : index + 1;
7771
- const level = nodes ? nodes.length - 1 : 0;
7772
- if ((0, _utils.eqEmptyValue)(rowid)) {
7773
- rowid = (0, _util.getRowUniqueId)();
7774
- _xeUtils.default.set(row, rowkey, rowid);
7775
- }
7776
- if (treeConfig && treeOpts.lazy) {
7777
- const treeExpRest = treeExpandedMaps[rowid];
7778
- if (row[hasChildField] && _xeUtils.default.isUndefined(row[childrenField])) {
7779
- row[childrenField] = null;
7780
- }
7781
- if (treeExpRest) {
7782
- if (!row[childrenField] || !row[childrenField].length) {
7783
- delete treeTempExpandedMaps[rowid];
7784
- }
7785
- }
7786
- }
7787
- let rowRest = fullAllDataRowIdData[rowid];
7925
+ const {
7926
+ handleUpdateRowId
7927
+ } = (0, _util.createHandleUpdateRowId)($xeTable);
7928
+ const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
7929
+ let rowRest = fullAllDataRowIdMaps[rowid];
7788
7930
  if (!rowRest) {
7789
7931
  rowRest = {
7790
7932
  row,
@@ -7802,6 +7944,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
7802
7944
  oTop: 0,
7803
7945
  expandHeight: 0
7804
7946
  };
7947
+ fullDataRowIdMaps[rowid] = rowRest;
7948
+ fullAllDataRowIdMaps[rowid] = rowRest;
7805
7949
  }
7806
7950
  rowRest.treeLoaded = false;
7807
7951
  rowRest.expandLoaded = false;
@@ -7809,16 +7953,33 @@ var _default = exports.default = (0, _vue.defineComponent)({
7809
7953
  rowRest.items = items;
7810
7954
  rowRest.parent = parentRow;
7811
7955
  rowRest.level = level;
7812
- rowRest.index = treeConfig && parentRow ? -1 : index;
7956
+ rowRest.index = currIndex;
7957
+ rowRest.treeIndex = index;
7813
7958
  fullDataRowIdMaps[rowid] = rowRest;
7814
7959
  fullAllDataRowIdMaps[rowid] = rowRest;
7815
7960
  };
7816
7961
  if (treeConfig) {
7817
- _xeUtils.default.eachTree(tableFullTreeData, handleRow, {
7962
+ _xeUtils.default.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
7963
+ const rowid = handleUpdateRowId(row);
7964
+ if (treeConfig && lazy) {
7965
+ const treeExpRest = treeTempExpandedMaps[rowid];
7966
+ if (row[hasChildField] && row[childrenField] === undefined) {
7967
+ row[childrenField] = null;
7968
+ }
7969
+ if (treeExpRest) {
7970
+ if (!row[childrenField] || !row[childrenField].length) {
7971
+ delete treeTempExpandedMaps[rowid];
7972
+ }
7973
+ }
7974
+ }
7975
+ handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, (0, _util.toTreePathSeq)(path));
7976
+ }, {
7818
7977
  children: childrenField
7819
7978
  });
7820
7979
  } else {
7821
- tableFullData.forEach(handleRow);
7980
+ tableFullData.forEach((row, index, items) => {
7981
+ handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
7982
+ });
7822
7983
  }
7823
7984
  internalData.fullDataRowIdData = fullDataRowIdMaps;
7824
7985
  internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
@@ -7829,19 +7990,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
7829
7990
  treeConfig
7830
7991
  } = props;
7831
7992
  const treeOpts = computeTreeOpts.value;
7832
- let {
7833
- sourceDataRowIdData
7834
- } = internalData;
7835
7993
  const sourceData = _xeUtils.default.clone(fullData, true);
7836
- const rowkey = (0, _util.getRowkey)($xeTable);
7837
- sourceDataRowIdData = internalData.sourceDataRowIdData = {};
7994
+ const {
7995
+ handleUpdateRowId
7996
+ } = (0, _util.createHandleUpdateRowId)($xeTable);
7997
+ const sourceRowIdData = {};
7838
7998
  const handleSourceRow = row => {
7839
- let rowid = (0, _util.getRowid)($xeTable, row);
7840
- if ((0, _utils.eqEmptyValue)(rowid)) {
7841
- rowid = (0, _util.getRowUniqueId)();
7842
- _xeUtils.default.set(row, rowkey, rowid);
7843
- }
7844
- sourceDataRowIdData[rowid] = row;
7999
+ const rowid = handleUpdateRowId(row);
8000
+ sourceRowIdData[rowid] = row;
7845
8001
  };
7846
8002
  // 源数据缓存
7847
8003
  if (treeConfig) {
@@ -7852,6 +8008,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7852
8008
  } else {
7853
8009
  sourceData.forEach(handleSourceRow);
7854
8010
  }
8011
+ internalData.sourceDataRowIdData = sourceRowIdData;
7855
8012
  internalData.tableSourceData = sourceData;
7856
8013
  },
7857
8014
  /**
@@ -8358,12 +8515,25 @@ var _default = exports.default = (0, _vue.defineComponent)({
8358
8515
  }
8359
8516
  }
8360
8517
  // 兼容老版本
8361
- let rest;
8362
- if (!evntList.some(func => func(Object.assign({
8363
- $grid: $xeGrid,
8364
- $table: $xeTable,
8365
- $event: evnt
8366
- }, args)) === false)) {
8518
+ let rest = null;
8519
+ let isStop = false;
8520
+ for (let i = 0; i < evntList.length; i++) {
8521
+ const func = evntList[i];
8522
+ const fnRest = func(Object.assign({
8523
+ $grid: $xeGrid,
8524
+ $table: $xeTable,
8525
+ $event: evnt
8526
+ }, args));
8527
+ if (fnRest === false) {
8528
+ isStop = true;
8529
+ break;
8530
+ } else if (fnRest && fnRest.status === false) {
8531
+ rest = fnRest.result;
8532
+ isStop = true;
8533
+ break;
8534
+ }
8535
+ }
8536
+ if (!isStop) {
8367
8537
  if (next) {
8368
8538
  rest = next();
8369
8539
  }
@@ -8403,10 +8573,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
8403
8573
  }
8404
8574
  // 树结构
8405
8575
  if (treeConfig) {
8576
+ const {
8577
+ handleGetRowId
8578
+ } = (0, _util.createHandleGetRowId)($xeTable);
8406
8579
  const childRowMaps = {};
8407
8580
  const childRowList = [];
8408
8581
  _xeUtils.default.eachTree(afterTreeFullData, row => {
8409
- const rowid = (0, _util.getRowid)($xeTable, row);
8582
+ const rowid = handleGetRowId(row);
8410
8583
  const childList = row[transform ? mapChildrenField : childrenField];
8411
8584
  if (childList && childList.length && !childRowMaps[rowid]) {
8412
8585
  childRowMaps[rowid] = 1;
@@ -8423,7 +8596,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8423
8596
  let hLen = 0; // 半选
8424
8597
  let vLen = 0; // 有效行
8425
8598
  childList.forEach(checkMethod ? item => {
8426
- const childRowid = (0, _util.getRowid)($xeTable, item);
8599
+ const childRowid = handleGetRowId(item);
8427
8600
  const isSelect = checkField ? _xeUtils.default.get(item, checkField) : selectRowMaps[childRowid];
8428
8601
  if (checkMethod({
8429
8602
  row: item
@@ -8442,7 +8615,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8442
8615
  }
8443
8616
  }
8444
8617
  } : item => {
8445
- const childRowid = (0, _util.getRowid)($xeTable, item);
8618
+ const childRowid = handleGetRowId(item);
8446
8619
  const isSelect = checkField ? _xeUtils.default.get(item, checkField) : selectRowMaps[childRowid];
8447
8620
  if (isSelect) {
8448
8621
  sLen++;
@@ -8501,12 +8674,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
8501
8674
  afterTreeFullData,
8502
8675
  checkboxReserveRowMap
8503
8676
  } = internalData;
8677
+ const {
8678
+ handleGetRowId
8679
+ } = (0, _util.createHandleGetRowId)($xeTable);
8504
8680
  let sLen = 0; // 已选
8505
8681
  let hLen = 0; // 半选
8506
8682
  let vLen = 0; // 有效行
8507
8683
  const rootList = treeConfig ? afterTreeFullData : afterFullData;
8508
8684
  rootList.forEach(checkMethod ? row => {
8509
- const childRowid = (0, _util.getRowid)($xeTable, row);
8685
+ const childRowid = handleGetRowId(row);
8510
8686
  const selected = checkField ? _xeUtils.default.get(row, checkField) : selectCheckboxMaps[childRowid];
8511
8687
  if (checkMethod({
8512
8688
  row
@@ -8525,7 +8701,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8525
8701
  }
8526
8702
  }
8527
8703
  } : row => {
8528
- const childRowid = (0, _util.getRowid)($xeTable, row);
8704
+ const childRowid = handleGetRowId(row);
8529
8705
  const selected = checkField ? _xeUtils.default.get(row, checkField) : selectCheckboxMaps[childRowid];
8530
8706
  if (selected) {
8531
8707
  sLen++;
@@ -8571,6 +8747,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
8571
8747
  checkStrictly,
8572
8748
  checkMethod
8573
8749
  } = checkboxOpts;
8750
+ const {
8751
+ handleGetRowId
8752
+ } = (0, _util.createHandleGetRowId)($xeTable);
8753
+ // indeterminateField 仅支持读取
8574
8754
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
8575
8755
  if (checkField) {
8576
8756
  // 树结构
@@ -8609,7 +8789,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8609
8789
  if (treeConfig && !checkStrictly) {
8610
8790
  // 更新子节点状态
8611
8791
  _xeUtils.default.eachTree(rows, row => {
8612
- const rowid = (0, _util.getRowid)($xeTable, row);
8792
+ const rowid = handleGetRowId(row);
8613
8793
  if (isForce || !checkMethod || checkMethod({
8614
8794
  row
8615
8795
  })) {
@@ -8630,7 +8810,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8630
8810
  }
8631
8811
  // 列表
8632
8812
  rows.forEach(row => {
8633
- const rowid = (0, _util.getRowid)($xeTable, row);
8813
+ const rowid = handleGetRowId(row);
8634
8814
  if (isForce || !checkMethod || checkMethod({
8635
8815
  row
8636
8816
  })) {
@@ -8784,6 +8964,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8784
8964
  } = internalData;
8785
8965
  const sortOpts = computeSortOpts.value;
8786
8966
  const columnOpts = computeColumnOpts.value;
8967
+ const currentColumnOpts = computeCurrentColumnOpts.value;
8787
8968
  const {
8788
8969
  column
8789
8970
  } = params;
@@ -8792,7 +8973,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8792
8973
  const triggerSort = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--sort').flag;
8793
8974
  const triggerFilter = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--filter').flag;
8794
8975
  if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
8795
- tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
8976
+ $xeTable.triggerSortEvent(evnt, column, getNextSortOrder(column));
8796
8977
  }
8797
8978
  dispatchEvent('header-cell-click', Object.assign({
8798
8979
  triggerResizable,
@@ -8800,8 +8981,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
8800
8981
  triggerFilter,
8801
8982
  cell
8802
8983
  }, params), evnt);
8803
- if (columnOpts.isCurrent || props.highlightCurrentColumn) {
8804
- tablePrivateMethods.triggerCurrentColumnEvent(evnt, params);
8984
+ if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
8985
+ $xeTable.triggerCurrentColumnEvent(evnt, params);
8805
8986
  }
8806
8987
  },
8807
8988
  triggerHeaderCellDblclickEvent(evnt, params) {
@@ -8817,6 +8998,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8817
8998
  triggerCellClickEvent(evnt, params) {
8818
8999
  const {
8819
9000
  highlightCurrentRow,
9001
+ highlightCurrentColumn,
8820
9002
  editConfig
8821
9003
  } = props;
8822
9004
  const {
@@ -8833,6 +9015,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
8833
9015
  const checkboxOpts = computeCheckboxOpts.value;
8834
9016
  const keyboardOpts = computeKeyboardOpts.value;
8835
9017
  const rowOpts = computeRowOpts.value;
9018
+ const columnOpts = computeColumnOpts.value;
9019
+ const currentColumnOpts = computeCurrentColumnOpts.value;
8836
9020
  const {
8837
9021
  actived,
8838
9022
  focused
@@ -8863,29 +9047,35 @@ var _default = exports.default = (0, _vue.defineComponent)({
8863
9047
  if (!triggerCheckbox && !triggerRadio) {
8864
9048
  // 如果是展开行
8865
9049
  if (!triggerExpandNode && (expandOpts.trigger === 'row' || isExpandType && expandOpts.trigger === 'cell')) {
8866
- tablePrivateMethods.triggerRowExpandEvent(evnt, params);
9050
+ $xeTable.triggerRowExpandEvent(evnt, params);
8867
9051
  }
8868
9052
  // 如果是树形表格
8869
9053
  if (treeOpts.trigger === 'row' || treeNode && treeOpts.trigger === 'cell') {
8870
- tablePrivateMethods.triggerTreeExpandEvent(evnt, params);
9054
+ $xeTable.triggerTreeExpandEvent(evnt, params);
8871
9055
  }
8872
9056
  }
8873
9057
  // 如果点击了树节点
8874
9058
  if (!triggerTreeNode) {
8875
9059
  if (!triggerExpandNode) {
8876
- // 如果是高亮行
9060
+ // 如果是当前行
8877
9061
  if (rowOpts.isCurrent || highlightCurrentRow) {
8878
9062
  if (!triggerCheckbox && !triggerRadio) {
8879
- tablePrivateMethods.triggerCurrentRowEvent(evnt, params);
9063
+ $xeTable.triggerCurrentRowEvent(evnt, params);
9064
+ }
9065
+ }
9066
+ // 如果是当前列
9067
+ if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
9068
+ if (!triggerCheckbox && !triggerRadio) {
9069
+ $xeTable.triggerCurrentColumnEvent(evnt, params);
8880
9070
  }
8881
9071
  }
8882
9072
  // 如果是单选框
8883
9073
  if (!triggerRadio && (radioOpts.trigger === 'row' || isRadioType && radioOpts.trigger === 'cell')) {
8884
- tablePrivateMethods.triggerRadioRowEvent(evnt, params);
9074
+ $xeTable.triggerRadioRowEvent(evnt, params);
8885
9075
  }
8886
9076
  // 如果是复选框
8887
9077
  if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || isCheckboxType && checkboxOpts.trigger === 'cell')) {
8888
- tablePrivateMethods.handleToggleCheckRowEvent(evnt, params);
9078
+ $xeTable.handleToggleCheckRowEvent(evnt, params);
8889
9079
  }
8890
9080
  }
8891
9081
  // 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
@@ -8991,13 +9181,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
8991
9181
  }
8992
9182
  },
8993
9183
  triggerCheckRowEvent(evnt, params, checked) {
8994
- const checkboxOpts = computeCheckboxOpts.value;
8995
9184
  const {
8996
9185
  row
8997
9186
  } = params;
8998
9187
  const {
8999
9188
  afterFullData
9000
9189
  } = internalData;
9190
+ const checkboxOpts = computeCheckboxOpts.value;
9001
9191
  const {
9002
9192
  checkMethod,
9003
9193
  trigger
@@ -9007,15 +9197,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
9007
9197
  }
9008
9198
  evnt.stopPropagation();
9009
9199
  if (checkboxOpts.isShiftKey && evnt.shiftKey && !props.treeConfig) {
9010
- const checkboxRecords = tableMethods.getCheckboxRecords();
9200
+ const checkboxRecords = $xeTable.getCheckboxRecords();
9011
9201
  if (checkboxRecords.length) {
9012
9202
  const firstRow = checkboxRecords[0];
9013
- const _rowIndex = tableMethods.getVTRowIndex(row);
9014
- const _firstRowIndex = tableMethods.getVTRowIndex(firstRow);
9203
+ const _rowIndex = $xeTable.getVTRowIndex(row);
9204
+ const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
9015
9205
  if (_rowIndex !== _firstRowIndex) {
9016
- tableMethods.setAllCheckboxRow(false);
9206
+ $xeTable.setAllCheckboxRow(false);
9017
9207
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
9018
- handleCheckedCheckboxRow(rangeRows, true, false);
9208
+ (0, _vue.nextTick)(() => {
9209
+ handleCheckedCheckboxRow(rangeRows, true, false);
9210
+ });
9019
9211
  dispatchEvent('checkbox-range-select', Object.assign({
9020
9212
  rangeRecords: rangeRows
9021
9213
  }, params), evnt);
@@ -9026,12 +9218,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
9026
9218
  if (!checkMethod || checkMethod({
9027
9219
  row
9028
9220
  })) {
9029
- tablePrivateMethods.handleBatchSelectRows([row], checked);
9030
- tablePrivateMethods.checkSelectionStatus();
9221
+ $xeTable.handleBatchSelectRows([row], checked);
9222
+ $xeTable.checkSelectionStatus();
9031
9223
  dispatchEvent('checkbox-change', Object.assign({
9032
- records: tableMethods.getCheckboxRecords(),
9033
- reserves: tableMethods.getCheckboxReserveRecords(),
9034
- indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
9224
+ records: () => $xeTable.getCheckboxRecords(),
9225
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
9226
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
9035
9227
  checked
9036
9228
  }, params), evnt);
9037
9229
  }
@@ -9421,6 +9613,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9421
9613
  } = internalData;
9422
9614
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
9423
9615
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
9616
+ const errRest = {
9617
+ status: false
9618
+ };
9424
9619
  if (prevDragRow && dragRow) {
9425
9620
  // 判断是否有拖动
9426
9621
  if (prevDragRow !== dragRow) {
@@ -9435,7 +9630,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9435
9630
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9436
9631
  return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
9437
9632
  if (!status) {
9438
- return;
9633
+ return errRest;
9439
9634
  }
9440
9635
  let oafIndex = -1;
9441
9636
  let nafIndex = -1;
@@ -9466,11 +9661,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9466
9661
  if (isPeerDrag && !isCrossDrag) {
9467
9662
  if (oldRest.row[parentField] !== newRest.row[parentField]) {
9468
9663
  // 非同级
9469
- return;
9664
+ return errRest;
9470
9665
  }
9471
9666
  } else {
9472
9667
  if (!isCrossDrag) {
9473
- return;
9668
+ return errRest;
9474
9669
  }
9475
9670
  if (oldAllMaps[newRowid]) {
9476
9671
  isSelfToChildStatus = true;
@@ -9481,19 +9676,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9481
9676
  content: getI18n('vxe.error.treeDragChild')
9482
9677
  });
9483
9678
  }
9484
- return;
9679
+ return errRest;
9485
9680
  }
9486
9681
  }
9487
9682
  }
9488
9683
  } else if (oldLevel) {
9489
9684
  // 子到根
9490
9685
  if (!isCrossDrag) {
9491
- return;
9686
+ return errRest;
9492
9687
  }
9493
9688
  } else if (newLevel) {
9494
9689
  // 根到子
9495
9690
  if (!isCrossDrag) {
9496
- return;
9691
+ return errRest;
9497
9692
  }
9498
9693
  if (oldAllMaps[newRowid]) {
9499
9694
  isSelfToChildStatus = true;
@@ -9504,7 +9699,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9504
9699
  content: getI18n('vxe.error.treeDragChild')
9505
9700
  });
9506
9701
  }
9507
- return;
9702
+ return errRest;
9508
9703
  }
9509
9704
  }
9510
9705
  } else {
@@ -9562,26 +9757,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
9562
9757
  if (reactData.scrollYLoad) {
9563
9758
  $xeTable.updateScrollYSpace();
9564
9759
  }
9565
- (0, _vue.nextTick)().then(() => {
9760
+ if (evnt) {
9761
+ dispatchEvent('row-dragend', {
9762
+ oldRow: dragRow,
9763
+ newRow: prevDragRow,
9764
+ dragRow,
9765
+ dragPos: prevDragPos,
9766
+ dragToChild: isDragToChildFlag,
9767
+ offsetIndex: dragOffsetIndex,
9768
+ _index: {
9769
+ newIndex: nafIndex,
9770
+ oldIndex: oafIndex
9771
+ }
9772
+ }, evnt);
9773
+ }
9774
+ return (0, _vue.nextTick)().then(() => {
9566
9775
  $xeTable.updateCellAreas();
9567
9776
  $xeTable.recalculate();
9777
+ }).then(() => {
9778
+ return {
9779
+ status: true
9780
+ };
9568
9781
  });
9569
- dispatchEvent('row-dragend', {
9570
- oldRow: dragRow,
9571
- newRow: prevDragRow,
9572
- dragRow,
9573
- dragPos: prevDragPos,
9574
- dragToChild: isDragToChildFlag,
9575
- offsetIndex: dragOffsetIndex,
9576
- _index: {
9577
- newIndex: nafIndex,
9578
- oldIndex: oafIndex
9579
- }
9580
- }, evnt);
9581
- }).catch(() => {});
9782
+ }).catch(() => {
9783
+ return errRest;
9784
+ });
9582
9785
  }
9583
9786
  }
9584
- return Promise.resolve();
9787
+ return Promise.resolve(errRest);
9585
9788
  },
9586
9789
  handleRowDragDragendEvent(evnt) {
9587
9790
  const {
@@ -9750,6 +9953,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9750
9953
  collectColumn
9751
9954
  } = internalData;
9752
9955
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
9956
+ const errRest = {
9957
+ status: false
9958
+ };
9753
9959
  if (prevDragCol && dragCol) {
9754
9960
  // 判断是否有拖动
9755
9961
  if (prevDragCol !== dragCol) {
@@ -9766,7 +9972,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9766
9972
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9767
9973
  return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
9768
9974
  if (!status) {
9769
- return;
9975
+ return errRest;
9770
9976
  }
9771
9977
  let oafIndex = -1;
9772
9978
  let nafIndex = -1;
@@ -9780,11 +9986,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9780
9986
  if (isPeerDrag && !isCrossDrag) {
9781
9987
  if (dragColumn.parentId !== newColumn.parentId) {
9782
9988
  // 非同级
9783
- return;
9989
+ return errRest;
9784
9990
  }
9785
9991
  } else {
9786
9992
  if (!isCrossDrag) {
9787
- return;
9993
+ return errRest;
9788
9994
  }
9789
9995
  if (oldAllMaps[newColumn.id]) {
9790
9996
  isSelfToChildStatus = true;
@@ -9795,19 +10001,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9795
10001
  content: getI18n('vxe.error.treeDragChild')
9796
10002
  });
9797
10003
  }
9798
- return;
10004
+ return errRest;
9799
10005
  }
9800
10006
  }
9801
10007
  }
9802
10008
  } else if (dragColumn.parentId) {
9803
10009
  // 子到根
9804
10010
  if (!isCrossDrag) {
9805
- return;
10011
+ return errRest;
9806
10012
  }
9807
10013
  } else if (newColumn.parentId) {
9808
10014
  // 根到子
9809
10015
  if (!isCrossDrag) {
9810
- return;
10016
+ return errRest;
9811
10017
  }
9812
10018
  if (oldAllMaps[newColumn.id]) {
9813
10019
  isSelfToChildStatus = true;
@@ -9818,7 +10024,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9818
10024
  content: getI18n('vxe.error.treeDragChild')
9819
10025
  });
9820
10026
  }
9821
- return;
10027
+ return errRest;
9822
10028
  }
9823
10029
  }
9824
10030
  } else {
@@ -9887,25 +10093,32 @@ var _default = exports.default = (0, _vue.defineComponent)({
9887
10093
  $xeTable.clearCopyCellArea();
9888
10094
  }
9889
10095
  }
9890
- dispatchEvent('column-dragend', {
9891
- oldColumn: dragColumn,
9892
- newColumn,
9893
- dragColumn,
9894
- dragPos: prevDragPos,
9895
- dragToChild: isDragToChildFlag,
9896
- offsetIndex: dragOffsetIndex,
9897
- _index: {
9898
- newIndex: nafIndex,
9899
- oldIndex: oafIndex
9900
- }
9901
- }, evnt);
10096
+ if (evnt) {
10097
+ dispatchEvent('column-dragend', {
10098
+ oldColumn: dragColumn,
10099
+ newColumn,
10100
+ dragColumn,
10101
+ dragPos: prevDragPos,
10102
+ dragToChild: isDragToChildFlag,
10103
+ offsetIndex: dragOffsetIndex,
10104
+ _index: {
10105
+ newIndex: nafIndex,
10106
+ oldIndex: oafIndex
10107
+ }
10108
+ }, evnt);
10109
+ }
9902
10110
  if (isSyncColumn) {
9903
10111
  $xeTable.handleColDragSwapColumn();
9904
10112
  }
9905
- }).catch(() => {});
10113
+ return {
10114
+ status: true
10115
+ };
10116
+ }).catch(() => {
10117
+ return errRest;
10118
+ });
9906
10119
  }
9907
10120
  }
9908
- return Promise.resolve();
10121
+ return Promise.resolve(errRest);
9909
10122
  },
9910
10123
  handleHeaderCellDragDragendEvent(evnt) {
9911
10124
  const {
@@ -10358,11 +10571,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
10358
10571
  } = _props.default;
10359
10572
  const {
10360
10573
  scrollXLoad,
10361
- scrollYLoad
10574
+ scrollYLoad,
10575
+ expandColumn
10362
10576
  } = reactData;
10363
10577
  const leftFixedWidth = computeLeftFixedWidth.value;
10364
10578
  const rightFixedWidth = computeRightFixedWidth.value;
10365
- if (!(scrollYLoad || leftFixedWidth || rightFixedWidth)) {
10579
+ if (!(scrollYLoad || leftFixedWidth || rightFixedWidth || expandColumn)) {
10366
10580
  return;
10367
10581
  }
10368
10582
  const {