vxe-table 3.11.30 → 3.11.32

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 (60) hide show
  1. package/es/grid/src/grid.js +8 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/keyboard/mixin.js +1 -26
  7. package/es/table/src/body.js +15 -3
  8. package/es/table/src/cell.js +23 -19
  9. package/es/table/src/header.js +33 -22
  10. package/es/table/src/methods.js +205 -46
  11. package/es/table/src/table.js +18 -11
  12. package/es/table/style.css +36 -0
  13. package/es/table/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +36 -0
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/grid/src/grid.js +8 -1
  19. package/lib/grid/src/grid.min.js +1 -1
  20. package/lib/index.css +1 -1
  21. package/lib/index.min.css +1 -1
  22. package/lib/index.umd.js +343 -142
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/style.css +1 -1
  25. package/lib/style.min.css +1 -1
  26. package/lib/table/module/keyboard/mixin.js +0 -32
  27. package/lib/table/module/keyboard/mixin.min.js +1 -1
  28. package/lib/table/src/body.js +16 -3
  29. package/lib/table/src/body.min.js +1 -1
  30. package/lib/table/src/cell.js +23 -17
  31. package/lib/table/src/cell.min.js +1 -1
  32. package/lib/table/src/header.js +35 -26
  33. package/lib/table/src/header.min.js +1 -1
  34. package/lib/table/src/methods.js +240 -46
  35. package/lib/table/src/methods.min.js +1 -1
  36. package/lib/table/src/table.js +19 -11
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/style/style.css +36 -0
  39. package/lib/table/style/style.min.css +1 -1
  40. package/lib/ui/index.js +1 -1
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +36 -0
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/grid/src/grid.ts +9 -1
  48. package/packages/table/module/keyboard/mixin.ts +1 -26
  49. package/packages/table/src/body.ts +14 -3
  50. package/packages/table/src/cell.ts +23 -19
  51. package/packages/table/src/header.ts +34 -22
  52. package/packages/table/src/methods.ts +220 -46
  53. package/packages/table/src/table.ts +20 -12
  54. package/styles/components/table.scss +36 -0
  55. /package/es/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
  56. /package/es/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
  57. /package/es/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
  58. /package/lib/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
  59. /package/lib/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
  60. /package/lib/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
2220
2220
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2221
2221
 
2222
2222
 
2223
- const version = "3.11.30";
2223
+ const version = "3.11.32";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2790,7 +2790,7 @@ function isNodeElement(elem) {
2790
2790
  const {
2791
2791
  log: log_log
2792
2792
  } = core_.VxeUI;
2793
- const log_version = `table v${"3.11.30"}`;
2793
+ const log_version = `table v${"3.11.32"}`;
2794
2794
  const warnLog = log_log.create('warn', log_version);
2795
2795
  const errLog = log_log.create('error', log_version);
2796
2796
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -3564,23 +3564,26 @@ function renderCellDragIcon(h, params) {
3564
3564
  const rowDragOpts = $table.computeRowDragOpts;
3565
3565
  const {
3566
3566
  icon,
3567
+ trigger,
3567
3568
  disabledMethod
3568
3569
  } = rowDragOpts;
3569
3570
  const rDisabledMethod = disabledMethod || (dragConfig ? dragConfig.rowDisabledMethod : null);
3570
3571
  const isDisabled = rDisabledMethod && rDisabledMethod(params);
3572
+ const ons = {};
3573
+ if (trigger !== 'cell') {
3574
+ ons.mousedown = evnt => {
3575
+ if (!isDisabled) {
3576
+ $table.handleCellDragMousedownEvent(evnt, params);
3577
+ }
3578
+ };
3579
+ ons.mouseup = $table.handleCellDragMouseupEvent;
3580
+ }
3571
3581
  return h('span', {
3572
3582
  key: 'dg',
3573
3583
  class: ['vxe-cell--drag-handle', {
3574
3584
  'is--disabled': isDisabled
3575
3585
  }],
3576
- on: {
3577
- mousedown(evnt) {
3578
- if (!isDisabled) {
3579
- $table.handleCellDragMousedownEvent(evnt, params);
3580
- }
3581
- },
3582
- mouseup: $table.handleCellDragMouseupEvent
3583
- }
3586
+ on: ons
3584
3587
  }, [h('i', {
3585
3588
  class: icon || (dragConfig ? dragConfig.rowIcon : '') || cell_getIcon().TABLE_DRAG_ROW
3586
3589
  })]);
@@ -3629,26 +3632,29 @@ function renderHeaderCellDragIcon(h, params) {
3629
3632
  const {
3630
3633
  showIcon,
3631
3634
  icon,
3635
+ trigger,
3632
3636
  isCrossDrag,
3633
3637
  visibleMethod,
3634
3638
  disabledMethod
3635
3639
  } = columnDragOpts;
3636
- const isDisabled = disabledMethod && disabledMethod(params);
3637
3640
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
3638
3641
  if (!column.fixed && (isCrossDrag || !column.parentId)) {
3642
+ const isDisabled = disabledMethod && disabledMethod(params);
3643
+ const ons = {};
3644
+ if (trigger !== 'cell') {
3645
+ ons.mousedown = evnt => {
3646
+ if (!isDisabled) {
3647
+ $table.handleHeaderCellDragMousedownEvent(evnt, params);
3648
+ }
3649
+ };
3650
+ ons.mouseup = $table.handleHeaderCellDragMouseupEvent;
3651
+ }
3639
3652
  return h('span', {
3640
3653
  key: 'dg',
3641
3654
  class: ['vxe-cell--drag-handle', {
3642
3655
  'is--disabled': isDisabled
3643
3656
  }],
3644
- on: {
3645
- mousedown(evnt) {
3646
- if (!isDisabled) {
3647
- $table.handleHeaderCellDragMousedownEvent(evnt, params);
3648
- }
3649
- },
3650
- mouseup: $table.handleHeaderCellDragMouseupEvent
3651
- }
3657
+ on: ons
3652
3658
  }, [h('i', {
3653
3659
  class: icon || cell_getIcon().TABLE_DRAG_COLUMN
3654
3660
  })]);
@@ -5802,7 +5808,6 @@ const Methods = {
5802
5808
  */
5803
5809
  loadData(datas) {
5804
5810
  const {
5805
- inited,
5806
5811
  initStatus
5807
5812
  } = this;
5808
5813
  return this.loadTableData(datas).then(() => {
@@ -5811,9 +5816,6 @@ const Methods = {
5811
5816
  if (!initStatus) {
5812
5817
  this.handleLoadDefaults();
5813
5818
  }
5814
- if (!inited) {
5815
- this.handleInitDefaults();
5816
- }
5817
5819
  return this.recalculate();
5818
5820
  });
5819
5821
  },
@@ -5822,18 +5824,12 @@ const Methods = {
5822
5824
  * @param {Array} datas 数据
5823
5825
  */
5824
5826
  reloadData(datas) {
5825
- const {
5826
- inited
5827
- } = this;
5828
5827
  return this.clearAll().then(() => {
5829
5828
  this.inited = true;
5830
5829
  this.initStatus = true;
5831
5830
  return this.loadTableData(datas);
5832
5831
  }).then(() => {
5833
5832
  this.handleLoadDefaults();
5834
- if (!inited) {
5835
- this.handleInitDefaults();
5836
- }
5837
5833
  return this.recalculate();
5838
5834
  });
5839
5835
  },
@@ -9560,29 +9556,84 @@ const Methods = {
9560
9556
  * @param {Array/Row} rows 行数据
9561
9557
  * @param {Boolean} value 是否选中
9562
9558
  */
9563
- setCheckboxRow(rows, value) {
9559
+ setCheckboxRow(rows, checked) {
9560
+ const $xeTable = this;
9564
9561
  if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
9565
9562
  rows = [rows];
9566
9563
  }
9567
- return this.handleCheckedCheckboxRow(rows, value, true);
9564
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
9565
+ },
9566
+ setCheckboxRowKey(keys, checked) {
9567
+ const $xeTable = this;
9568
+ const internalData = $xeTable;
9569
+ const {
9570
+ fullAllDataRowIdData
9571
+ } = internalData;
9572
+ if (keys && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(keys)) {
9573
+ keys = [keys];
9574
+ }
9575
+ const rows = [];
9576
+ keys.forEach(rowid => {
9577
+ const rowRest = fullAllDataRowIdData[rowid];
9578
+ if (rowRest) {
9579
+ rows.push(rowRest.row);
9580
+ }
9581
+ });
9582
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
9568
9583
  },
9569
9584
  isCheckedByCheckboxRow(row) {
9585
+ const $xeTable = this;
9586
+ const reactData = $xeTable;
9570
9587
  const {
9571
9588
  selectCheckboxMaps
9572
- } = this;
9589
+ } = reactData;
9590
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
9573
9591
  const {
9574
9592
  checkField
9575
- } = this.checkboxOpts;
9593
+ } = checkboxOpts;
9576
9594
  if (checkField) {
9577
9595
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField);
9578
9596
  }
9579
- return !!selectCheckboxMaps[getRowid(this, row)];
9597
+ return !!selectCheckboxMaps[getRowid($xeTable, row)];
9598
+ },
9599
+ isCheckedByCheckboxRowKey(rowid) {
9600
+ const $xeTable = this;
9601
+ const reactData = $xeTable;
9602
+ const internalData = $xeTable;
9603
+ const {
9604
+ selectCheckboxMaps
9605
+ } = reactData;
9606
+ const {
9607
+ fullAllDataRowIdData
9608
+ } = internalData;
9609
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
9610
+ const {
9611
+ checkField
9612
+ } = checkboxOpts;
9613
+ if (checkField) {
9614
+ const rowRest = fullAllDataRowIdData[rowid];
9615
+ if (rowRest) {
9616
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rowRest.row, checkField);
9617
+ }
9618
+ return false;
9619
+ }
9620
+ return !!selectCheckboxMaps[rowid];
9580
9621
  },
9581
9622
  isIndeterminateByCheckboxRow(row) {
9623
+ const $xeTable = this;
9624
+ const reactData = $xeTable;
9582
9625
  const {
9583
9626
  treeIndeterminateMaps
9584
- } = this;
9585
- return !!treeIndeterminateMaps[getRowid(this, row)] && !this.isCheckedByCheckboxRow(row);
9627
+ } = reactData;
9628
+ return !!treeIndeterminateMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
9629
+ },
9630
+ isIndeterminateByCheckboxRowKey(rowid) {
9631
+ const $xeTable = this;
9632
+ const reactData = $xeTable;
9633
+ const {
9634
+ treeIndeterminateMaps
9635
+ } = reactData;
9636
+ return !!treeIndeterminateMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
9586
9637
  },
9587
9638
  /**
9588
9639
  * 切换选中
@@ -10490,7 +10541,26 @@ const Methods = {
10490
10541
  return this.$nextTick();
10491
10542
  },
10492
10543
  isCheckedByRadioRow(row) {
10493
- return this.selectRadioRow === row;
10544
+ const $xeTable = this;
10545
+ const reactData = $xeTable;
10546
+ const {
10547
+ selectRadioRow
10548
+ } = reactData;
10549
+ if (row && selectRadioRow) {
10550
+ return $xeTable.eqRow(selectRadioRow, row);
10551
+ }
10552
+ return false;
10553
+ },
10554
+ isCheckedByRadioRowKey(key) {
10555
+ const $xeTable = this;
10556
+ const reactData = $xeTable;
10557
+ const {
10558
+ selectRadioRow
10559
+ } = reactData;
10560
+ if (selectRadioRow) {
10561
+ return key === getRowid($xeTable, selectRadioRow);
10562
+ }
10563
+ return false;
10494
10564
  },
10495
10565
  handleCheckedRadioRow(row, isForce) {
10496
10566
  const {
@@ -10512,7 +10582,24 @@ const Methods = {
10512
10582
  * @param {Row} row 行对象
10513
10583
  */
10514
10584
  setRadioRow(row) {
10515
- return this.handleCheckedRadioRow(row, true);
10585
+ const $xeTable = this;
10586
+ return $xeTable.handleCheckedRadioRow(row, true);
10587
+ },
10588
+ /**
10589
+ * 用于单选行,设置某一行为选中状态
10590
+ * @param key 行主键
10591
+ */
10592
+ setRadioRowKey(rowid) {
10593
+ const $xeTable = this;
10594
+ const internalData = $xeTable;
10595
+ const {
10596
+ fullAllDataRowIdData
10597
+ } = internalData;
10598
+ const rowRest = fullAllDataRowIdData[rowid];
10599
+ if (rowRest) {
10600
+ return $xeTable.handleCheckedRadioRow(rowRest.row, true);
10601
+ }
10602
+ return $xeTable.$nextTick();
10516
10603
  },
10517
10604
  /**
10518
10605
  * 用于当前行,手动清空当前高亮的状态
@@ -10667,6 +10754,7 @@ const Methods = {
10667
10754
  * 如果是双击模式,则单击后选中状态
10668
10755
  */
10669
10756
  triggerCellClickEvent(evnt, params) {
10757
+ const $xeTable = this;
10670
10758
  const {
10671
10759
  highlightCurrentRow,
10672
10760
  editStore,
@@ -10756,6 +10844,20 @@ const Methods = {
10756
10844
  }
10757
10845
  }
10758
10846
  }
10847
+ // 如果是双击编辑模式
10848
+ if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
10849
+ if (actived.row && actived.column) {
10850
+ if (editOpts.mode === 'row') {
10851
+ if (!$xeTable.eqRow(actived.row, row)) {
10852
+ $xeTable.handleClearEdit(evnt);
10853
+ }
10854
+ } else if (editOpts.mode === 'cell') {
10855
+ if (!$xeTable.eqRow(actived.row, row) || actived.column.id !== column.id) {
10856
+ $xeTable.handleClearEdit(evnt);
10857
+ }
10858
+ }
10859
+ }
10860
+ }
10759
10861
  this.emitEvent('cell-click', params, evnt);
10760
10862
  },
10761
10863
  /**
@@ -10869,6 +10971,94 @@ const Methods = {
10869
10971
  $xeTable.handleColumnSortEvent(evnt, column);
10870
10972
  }
10871
10973
  },
10974
+ /**
10975
+ * 表头单元格按下事件
10976
+ */
10977
+ triggerHeaderCellMousedownEvent(evnt, params) {
10978
+ const $xeTable = this;
10979
+ const props = $xeTable;
10980
+ const {
10981
+ mouseConfig
10982
+ } = props;
10983
+ const mouseOpts = $xeTable.computeMouseOpts;
10984
+ const columnOpts = $xeTable.computeColumnOpts;
10985
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
10986
+ const {
10987
+ trigger,
10988
+ disabledMethod
10989
+ } = columnDragOpts;
10990
+ const cell = evnt.currentTarget;
10991
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
10992
+ const triggerCheckbox = getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
10993
+ const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
10994
+ const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
10995
+ let triggerDrag = false;
10996
+ if (!(triggerInput || triggerCheckbox || triggerSort || triggerFilter)) {
10997
+ if (columnOpts.drag && trigger === 'cell' && !(disabledMethod && disabledMethod(params))) {
10998
+ triggerDrag = true;
10999
+ $xeTable.handleHeaderCellDragMousedownEvent(evnt, params);
11000
+ }
11001
+ }
11002
+ if (!triggerDrag && mouseConfig && mouseOpts.area && $xeTable.handleHeaderCellAreaEvent) {
11003
+ $xeTable.handleHeaderCellAreaEvent(evnt, Object.assign({
11004
+ cell,
11005
+ triggerSort,
11006
+ triggerFilter
11007
+ }, params));
11008
+ }
11009
+ $xeTable.focus();
11010
+ if ($xeTable.closeMenu) {
11011
+ $xeTable.closeMenu();
11012
+ }
11013
+ },
11014
+ /**
11015
+ * 单元格按下事件
11016
+ */
11017
+ triggerCellMousedownEvent(evnt, params) {
11018
+ const $xeTable = this;
11019
+ const {
11020
+ column
11021
+ } = params;
11022
+ const {
11023
+ type,
11024
+ treeNode
11025
+ } = column;
11026
+ const isRadioType = type === 'radio';
11027
+ const isCheckboxType = type === 'checkbox';
11028
+ const isExpandType = type === 'expand';
11029
+ const rowOpts = $xeTable.computeRowOpts;
11030
+ const rowDragOpts = $xeTable.computeRowDragOpts;
11031
+ const {
11032
+ trigger,
11033
+ disabledMethod
11034
+ } = rowDragOpts;
11035
+ const cell = evnt.currentTarget;
11036
+ params.cell = cell;
11037
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
11038
+ const triggerRadio = isRadioType && getEventTargetNode(evnt, cell, 'vxe-cell--radio').flag;
11039
+ const triggerCheckbox = isCheckboxType && getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
11040
+ const triggerTreeNode = treeNode && getEventTargetNode(evnt, cell, 'vxe-tree--btn-wrapper').flag;
11041
+ const triggerExpandNode = isExpandType && getEventTargetNode(evnt, cell, 'vxe-table--expanded').flag;
11042
+ let isColDragCell = false;
11043
+ if (rowOpts.drag) {
11044
+ isColDragCell = trigger === 'row' || column.dragSort && trigger === 'cell';
11045
+ }
11046
+ let triggerDrag = false;
11047
+ if (!(triggerInput || triggerRadio || triggerCheckbox || triggerTreeNode || triggerExpandNode)) {
11048
+ if (isColDragCell && !(disabledMethod && disabledMethod(params))) {
11049
+ triggerDrag = true;
11050
+ $xeTable.handleCellDragMousedownEvent(evnt, params);
11051
+ }
11052
+ }
11053
+ if (!triggerDrag && $xeTable.handleCellMousedownEvent) {
11054
+ $xeTable.handleCellMousedownEvent(evnt, params);
11055
+ }
11056
+ $xeTable.focus();
11057
+ $xeTable.closeFilter();
11058
+ if ($xeTable.closeMenu) {
11059
+ $xeTable.closeMenu();
11060
+ }
11061
+ },
10872
11062
  /**
10873
11063
  * 行拖拽
10874
11064
  */
@@ -11129,18 +11319,20 @@ const Methods = {
11129
11319
  const $xeTable = this;
11130
11320
  const props = $xeTable;
11131
11321
  const reactData = $xeTable;
11322
+ evnt.stopPropagation();
11132
11323
  const {
11133
11324
  dragConfig
11134
11325
  } = props;
11135
11326
  const rowDragOpts = $xeTable.computeRowDragOpts;
11136
11327
  const {
11328
+ trigger,
11137
11329
  dragStartMethod
11138
11330
  } = rowDragOpts;
11139
11331
  const {
11140
11332
  row
11141
11333
  } = params;
11142
11334
  const dragEl = evnt.currentTarget;
11143
- const tdEl = dragEl.parentElement?.parentElement;
11335
+ const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : dragEl.parentElement?.parentElement;
11144
11336
  const trEl = tdEl.parentElement;
11145
11337
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
11146
11338
  reactData.isDragRowMove = false;
@@ -11400,15 +11592,17 @@ const Methods = {
11400
11592
  handleHeaderCellDragMousedownEvent(evnt, params) {
11401
11593
  const $xeTable = this;
11402
11594
  const reactData = $xeTable;
11595
+ evnt.stopPropagation();
11403
11596
  const columnDragOpts = $xeTable.computeColumnDragOpts;
11404
11597
  const {
11598
+ trigger,
11405
11599
  dragStartMethod
11406
11600
  } = columnDragOpts;
11407
11601
  const {
11408
11602
  column
11409
11603
  } = params;
11410
11604
  const dragEl = evnt.currentTarget;
11411
- const thEl = dragEl.parentElement?.parentElement;
11605
+ const thEl = trigger === 'cell' ? dragEl : dragEl.parentElement?.parentElement;
11412
11606
  reactData.isDragColMove = false;
11413
11607
  clearColDropOrigin($xeTable);
11414
11608
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -11435,66 +11629,67 @@ const Methods = {
11435
11629
  reactData.isDragColMove = false;
11436
11630
  },
11437
11631
  setPendingRow(rows, status) {
11438
- const pendingMaps = {
11439
- ...this.pendingRowMaps
11440
- };
11441
- const pendingList = [...this.pendingRowList];
11632
+ const $xeTable = this;
11633
+ const reactData = $xeTable;
11634
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
11442
11635
  if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
11443
11636
  rows = [rows];
11444
11637
  }
11445
11638
  if (status) {
11446
11639
  rows.forEach(row => {
11447
- const rowid = getRowid(this, row);
11640
+ const rowid = getRowid($xeTable, row);
11448
11641
  if (rowid && !pendingMaps[rowid]) {
11449
- pendingList.push(row);
11450
11642
  pendingMaps[rowid] = row;
11451
11643
  }
11452
11644
  });
11453
11645
  } else {
11454
11646
  rows.forEach(row => {
11455
- const rowid = getRowid(this, row);
11647
+ const rowid = getRowid($xeTable, row);
11456
11648
  if (rowid && pendingMaps[rowid]) {
11457
- const pendingIndex = this.findRowIndexOf(pendingList, row);
11458
- if (pendingIndex > -1) {
11459
- pendingList.splice(pendingIndex, 1);
11460
- }
11461
11649
  delete pendingMaps[rowid];
11462
11650
  }
11463
11651
  });
11464
11652
  }
11465
- this.pendingRowMaps = pendingMaps;
11466
- this.pendingRowList = pendingList;
11467
- return this.$nextTick();
11653
+ reactData.pendingRowMaps = pendingMaps;
11654
+ return $xeTable.$nextTick();
11468
11655
  },
11469
11656
  togglePendingRow(rows) {
11470
- const pendingMaps = {
11471
- ...this.pendingRowMaps
11472
- };
11473
- const pendingList = [...this.pendingRowList];
11657
+ const $xeTable = this;
11658
+ const reactData = $xeTable;
11659
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
11474
11660
  if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
11475
11661
  rows = [rows];
11476
11662
  }
11477
11663
  rows.forEach(row => {
11478
- const rowid = getRowid(this, row);
11664
+ const rowid = getRowid($xeTable, row);
11479
11665
  if (rowid) {
11480
11666
  if (pendingMaps[rowid]) {
11481
- const pendingIndex = this.findRowIndexOf(pendingList, row);
11482
- if (pendingIndex > -1) {
11483
- pendingList.splice(pendingIndex, 1);
11484
- }
11485
11667
  delete pendingMaps[rowid];
11486
11668
  } else {
11487
- pendingList.push(row);
11488
11669
  pendingMaps[rowid] = row;
11489
11670
  }
11490
11671
  }
11491
11672
  });
11492
- this.pendingRowMaps = pendingMaps;
11493
- this.pendingRowList = pendingList;
11494
- return this.$nextTick();
11673
+ reactData.pendingRowMaps = pendingMaps;
11674
+ return $xeTable.$nextTick();
11495
11675
  },
11496
11676
  getPendingRecords() {
11497
- return this.pendingRowList.slice(0);
11677
+ const $xeTable = this;
11678
+ const reactData = $xeTable;
11679
+ const internalData = $xeTable;
11680
+ const {
11681
+ pendingRowMaps
11682
+ } = reactData;
11683
+ const {
11684
+ fullAllDataRowIdData
11685
+ } = internalData;
11686
+ const insertRecords = [];
11687
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(pendingRowMaps, (row, rowid) => {
11688
+ if (fullAllDataRowIdData[rowid]) {
11689
+ insertRecords.push(row);
11690
+ }
11691
+ });
11692
+ return insertRecords;
11498
11693
  },
11499
11694
  hasPendingByRow(row) {
11500
11695
  const {
@@ -11505,7 +11700,6 @@ const Methods = {
11505
11700
  },
11506
11701
  clearPendingRow() {
11507
11702
  this.pendingRowMaps = {};
11508
- this.pendingRowList = [];
11509
11703
  return this.$nextTick();
11510
11704
  },
11511
11705
  sort(sortConfs, sortOrder) {
@@ -12645,6 +12839,8 @@ const Methods = {
12645
12839
  }
12646
12840
  internalData.lastScrollTop = scrollTop;
12647
12841
  }
12842
+ reactData.isDragColMove = false;
12843
+ reactData.isDragRowMove = false;
12648
12844
  reactData.lastScrollTime = Date.now();
12649
12845
  const evntParams = {
12650
12846
  scrollTop,
@@ -13600,6 +13796,10 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
13600
13796
  areaOpts,
13601
13797
  validErrorMaps
13602
13798
  } = $xetable;
13799
+ const rowDragOpts = $xetable.computeRowDragOpts;
13800
+ const {
13801
+ disabledMethod: dragDisabledMethod
13802
+ } = rowDragOpts;
13603
13803
  const {
13604
13804
  selectCellToRow
13605
13805
  } = areaOpts;
@@ -13675,6 +13875,14 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
13675
13875
  data: tableData,
13676
13876
  items
13677
13877
  };
13878
+ let isColDragCell = false;
13879
+ let isDisabledDrag = false;
13880
+ if (rowOpts.drag) {
13881
+ isColDragCell = rowDragOpts.trigger === 'row' || column.dragSort && rowDragOpts.trigger === 'cell';
13882
+ }
13883
+ if (isColDragCell) {
13884
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
13885
+ }
13678
13886
  // hover 进入事件
13679
13887
  if (showTitle || showTooltip || showAllTip || bindMouseenter || tooltipConfig) {
13680
13888
  tdOns.mouseenter = evnt => {
@@ -13711,7 +13919,7 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
13711
13919
  };
13712
13920
  }
13713
13921
  // 按下事件处理
13714
- if (checkboxOpts.range || mouseConfig) {
13922
+ if (isColDragCell || checkboxOpts.range || mouseConfig) {
13715
13923
  tdOns.mousedown = evnt => {
13716
13924
  $xetable.triggerCellMousedownEvent(evnt, params);
13717
13925
  };
@@ -13844,6 +14052,8 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
13844
14052
  'col--edit': isEdit,
13845
14053
  'col--ellipsis': hasEllipsis,
13846
14054
  'fixed--hidden': fixedHiddenColumn,
14055
+ 'is--drag-cell': isColDragCell,
14056
+ 'is--drag-disabled': isDisabledDrag,
13847
14057
  'col--dirty': isDirty,
13848
14058
  'col--active': editConfig && isEdit && actived.row === row && (actived.column === column || editOpts.mode === 'row'),
13849
14059
  'col--valid-error': !!errorValidItem,
@@ -13879,7 +14089,6 @@ function renderRows(h, _vm, $xeTable, fixedType, tableData, tableColumn) {
13879
14089
  hasFixedColumn,
13880
14090
  fullAllDataRowIdData,
13881
14091
  rowOpts,
13882
- pendingRowList,
13883
14092
  pendingRowMaps,
13884
14093
  columnOpts,
13885
14094
  isDragColMove
@@ -13972,7 +14181,7 @@ function renderRows(h, _vm, $xeTable, fixedType, tableData, tableColumn) {
13972
14181
  'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
13973
14182
  'row--radio': radioOpts.highlight && $xeTable.selectRadioRow === row,
13974
14183
  'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
13975
- 'row--pending': pendingRowList.length && !!pendingRowMaps[rowid]
14184
+ 'row--pending': !!pendingRowMaps[rowid]
13976
14185
  }, rowClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowClassName) ? rowClassName(params) : rowClassName : ''];
13977
14186
  const tdVNs = tableColumn.map((column, $columnIndex) => {
13978
14187
  return renderColumn(h, _vm, $xeTable, seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData);
@@ -14484,12 +14693,12 @@ const {
14484
14693
  } = core_.VxeUI;
14485
14694
  const cellType = 'header';
14486
14695
  const header_renderRows = (h, _vm, cols, $rowIndex) => {
14696
+ const $xeTable = _vm.$parent;
14697
+ const $xeGrid = $xeTable.xegrid;
14487
14698
  const {
14488
- $parent: $xetable,
14489
14699
  fixedType
14490
14700
  } = _vm;
14491
14701
  const {
14492
- $listeners: tableListeners,
14493
14702
  resizable: allResizable,
14494
14703
  border,
14495
14704
  columnKey,
@@ -14498,15 +14707,17 @@ const header_renderRows = (h, _vm, cols, $rowIndex) => {
14498
14707
  showHeaderOverflow: allColumnHeaderOverflow,
14499
14708
  headerAlign: allHeaderAlign,
14500
14709
  align: allAlign,
14501
- highlightCurrentColumn,
14502
14710
  currentColumn,
14503
14711
  scrollXLoad,
14504
14712
  overflowX,
14505
14713
  scrollbarWidth,
14506
- sortOpts,
14507
14714
  mouseConfig,
14508
14715
  columnOpts
14509
- } = $xetable;
14716
+ } = $xeTable;
14717
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
14718
+ const {
14719
+ disabledMethod: dragDisabledMethod
14720
+ } = columnDragOpts;
14510
14721
  return cols.map((column, $columnIndex) => {
14511
14722
  const {
14512
14723
  type,
@@ -14529,13 +14740,12 @@ const header_renderRows = (h, _vm, cols, $rowIndex) => {
14529
14740
  const showTitle = headOverflow === 'title';
14530
14741
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
14531
14742
  let hasEllipsis = showTitle || showTooltip || showEllipsis;
14532
- const thOns = {};
14533
14743
  const hasFilter = column.filters && column.filters.some(item => item.checked);
14534
- const columnIndex = $xetable.getColumnIndex(column);
14535
- const _columnIndex = $xetable.getVTColumnIndex(column);
14744
+ const columnIndex = $xeTable.getColumnIndex(column);
14745
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
14536
14746
  const params = {
14537
- $table: $xetable,
14538
- $grid: $xetable.xegrid,
14747
+ $table: $xeTable,
14748
+ $grid: $xeGrid,
14539
14749
  $rowIndex,
14540
14750
  column,
14541
14751
  columnIndex,
@@ -14546,25 +14756,36 @@ const header_renderRows = (h, _vm, cols, $rowIndex) => {
14546
14756
  isHidden: fixedHiddenColumn,
14547
14757
  hasFilter
14548
14758
  };
14759
+ const thAttrs = {
14760
+ colid,
14761
+ colspan: column.colSpan > 1 ? column.colSpan : null,
14762
+ rowspan: column.rowSpan > 1 ? column.rowSpan : null
14763
+ };
14764
+ const thOns = {
14765
+ click: evnt => $xeTable.triggerHeaderCellClickEvent(evnt, params),
14766
+ dblclick: evnt => $xeTable.triggerHeaderCellDblclickEvent(evnt, params)
14767
+ };
14549
14768
  // 虚拟滚动不支持动态高度
14550
14769
  if (scrollXLoad && !hasEllipsis) {
14551
14770
  showEllipsis = hasEllipsis = true;
14552
14771
  }
14553
- if (columnOpts.isCurrent || highlightCurrentColumn || tableListeners['header-cell-click'] || sortOpts.trigger === 'cell') {
14554
- thOns.click = evnt => $xetable.triggerHeaderCellClickEvent(evnt, params);
14555
- }
14556
- if (tableListeners['header-cell-dblclick']) {
14557
- thOns.dblclick = evnt => $xetable.triggerHeaderCellDblclickEvent(evnt, params);
14772
+ const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
14773
+ let isDisabledDrag = false;
14774
+ if (isColDragCell) {
14775
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
14558
14776
  }
14559
14777
  // 按下事件处理
14560
- if (mouseConfig) {
14561
- thOns.mousedown = evnt => $xetable.triggerHeaderCellMousedownEvent(evnt, params);
14778
+ if (mouseConfig || isColDragCell) {
14779
+ thOns.mousedown = evnt => $xeTable.triggerHeaderCellMousedownEvent(evnt, params);
14562
14780
  }
14563
- // 拖拽行事件
14781
+ // 拖拽列事件
14564
14782
  if (columnOpts.drag) {
14565
- thOns.dragstart = $xetable.handleHeaderCellDragDragstartEvent;
14566
- thOns.dragend = $xetable.handleHeaderCellDragDragendEvent;
14567
- thOns.dragover = $xetable.handleHeaderCellDragDragoverEvent;
14783
+ thOns.dragstart = $xeTable.handleHeaderCellDragDragstartEvent;
14784
+ thOns.dragend = $xeTable.handleHeaderCellDragDragendEvent;
14785
+ thOns.dragover = $xeTable.handleHeaderCellDragDragoverEvent;
14786
+ if (isColDragCell) {
14787
+ thOns.mouseup = $xeTable.handleHeaderCellDragMouseupEvent;
14788
+ }
14568
14789
  }
14569
14790
  return h('th', {
14570
14791
  class: ['vxe-header--column', colid, {
@@ -14578,13 +14799,10 @@ const header_renderRows = (h, _vm, cols, $rowIndex) => {
14578
14799
  'is--sortable': column.sortable,
14579
14800
  'col--filter': !!column.filters,
14580
14801
  'is--filter-active': hasFilter,
14802
+ 'is--drag-disabled': isDisabledDrag,
14581
14803
  'col--current': currentColumn === column
14582
14804
  }, getClass(headerClassName, params), getClass(headerCellClassName, params)],
14583
- attrs: {
14584
- colid,
14585
- colspan: column.colSpan > 1 ? column.colSpan : null,
14586
- rowspan: column.rowSpan > 1 ? column.rowSpan : null
14587
- },
14805
+ attrs: thAttrs,
14588
14806
  style: headerCellStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerCellStyle) ? headerCellStyle(params) : headerCellStyle : null,
14589
14807
  on: thOns,
14590
14808
  key: columnKey || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
@@ -21665,38 +21883,6 @@ function getCheckboxRangeRows($xeTable, evnt, params, targetTrElem, trRect, offs
21665
21883
  this.handleSelected(params, evnt);
21666
21884
  });
21667
21885
  },
21668
- /**
21669
- * 表头单元格按下事件
21670
- */
21671
- triggerHeaderCellMousedownEvent(evnt, params) {
21672
- const {
21673
- mouseConfig,
21674
- mouseOpts
21675
- } = this;
21676
- if (mouseConfig && mouseOpts.area && this.handleHeaderCellAreaEvent) {
21677
- const cell = evnt.currentTarget;
21678
- const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
21679
- const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
21680
- this.handleHeaderCellAreaEvent(evnt, Object.assign({
21681
- cell,
21682
- triggerSort,
21683
- triggerFilter
21684
- }, params));
21685
- }
21686
- this.focus();
21687
- this.closeMenu();
21688
- },
21689
- /**
21690
- * 单元格按下事件
21691
- */
21692
- triggerCellMousedownEvent(evnt, params) {
21693
- const cell = evnt.currentTarget;
21694
- params.cell = cell;
21695
- this.handleCellMousedownEvent(evnt, params);
21696
- this.focus();
21697
- this.closeFilter();
21698
- this.closeMenu();
21699
- },
21700
21886
  handleCellMousedownEvent(evnt, params) {
21701
21887
  const {
21702
21888
  editConfig,
@@ -23111,8 +23297,6 @@ function handleUupdateResize(_vm) {
23111
23297
  reColumnFlag: 0,
23112
23298
  // 已标记的对象集
23113
23299
  pendingRowMaps: {},
23114
- // 已标记的行
23115
- pendingRowList: [],
23116
23300
  // 自定义列相关的信息
23117
23301
  customStore: {
23118
23302
  btnEl: null,
@@ -23629,6 +23813,19 @@ function handleUupdateResize(_vm) {
23629
23813
  y: overflowY && scrollYLoad
23630
23814
  };
23631
23815
  },
23816
+ computeTableStyle() {
23817
+ const $xeTable = this;
23818
+ const reactData = $xeTable;
23819
+ const {
23820
+ tableData
23821
+ } = reactData;
23822
+ const columnOpts = $xeTable.computeColumnOpts;
23823
+ const stys = {};
23824
+ if (columnOpts.drag) {
23825
+ stys['--vxe-ui-table-drag-column-move-delay'] = `${Math.max(0.06, Math.min(0.3, tableData.length / 800))}s`;
23826
+ }
23827
+ return stys;
23828
+ },
23632
23829
  tabsResizeFlag() {
23633
23830
  const $xeTable = this;
23634
23831
  const $xeTabs = $xeTable.$xeTabs;
@@ -23638,7 +23835,6 @@ function handleUupdateResize(_vm) {
23638
23835
  watch: {
23639
23836
  data(value) {
23640
23837
  const {
23641
- inited,
23642
23838
  initStatus
23643
23839
  } = this;
23644
23840
  this.loadTableData(value).then(() => {
@@ -23647,9 +23843,6 @@ function handleUupdateResize(_vm) {
23647
23843
  if (!initStatus) {
23648
23844
  this.handleLoadDefaults();
23649
23845
  }
23650
- if (!inited) {
23651
- this.handleInitDefaults();
23652
- }
23653
23846
  // const checkboxColumn = this.tableFullColumn.find(column => column.type === 'checkbox')
23654
23847
  // if (checkboxColumn && this.tableFullData.length > 300 && !this.checkboxOpts.checkField) {
23655
23848
  // warnLog('vxe.error.checkProp', ['checkbox-config.checkField'])
@@ -23930,7 +24123,7 @@ function handleUupdateResize(_vm) {
23930
24123
  if (this.editRules && !this._validate) {
23931
24124
  errLog('vxe.error.reqModule', ['Validator']);
23932
24125
  }
23933
- if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.triggerCellMousedownEvent) {
24126
+ if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.handleCellMousedownEvent) {
23934
24127
  errLog('vxe.error.reqModule', ['Keyboard']);
23935
24128
  }
23936
24129
  if ((this.printConfig || this.importConfig || this.exportConfig) && !this._exportData) {
@@ -23953,8 +24146,8 @@ function handleUupdateResize(_vm) {
23953
24146
  this.inited = true;
23954
24147
  this.initStatus = true;
23955
24148
  this.handleLoadDefaults();
23956
- this.handleInitDefaults();
23957
24149
  }
24150
+ this.handleInitDefaults();
23958
24151
  this.updateStyle();
23959
24152
  });
23960
24153
  table_globalEvents.on(this, 'paste', this.handleGlobalPasteEvent);
@@ -24107,6 +24300,8 @@ function handleUupdateResize(_vm) {
24107
24300
  const vSize = computeSize;
24108
24301
  const virtualScrollBars = $xeTable.computeVirtualScrollBars;
24109
24302
  const isArea = mouseConfig && mouseOpts.area;
24303
+ const tableStyle = $xeTable.computeTableStyle;
24304
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
24110
24305
  return h('div', {
24111
24306
  ref: 'refElem',
24112
24307
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
@@ -24122,6 +24317,7 @@ function handleUupdateResize(_vm) {
24122
24317
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
24123
24318
  'checkbox--range': checkboxOpts.range,
24124
24319
  'column--calc': isCalcColumn,
24320
+ 'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
24125
24321
  'is--header': showHeader,
24126
24322
  'is--footer': showFooter,
24127
24323
  'is--group': isGroup,
@@ -24139,9 +24335,7 @@ function handleUupdateResize(_vm) {
24139
24335
  'is--virtual-x': scrollXLoad,
24140
24336
  'is--virtual-y': scrollYLoad
24141
24337
  }],
24142
- style: {
24143
- '--vxe-ui-table-drag-column-move-delay': `${Math.max(0.05, Math.min(0.3, tableData.length / 800))}s`
24144
- },
24338
+ style: tableStyle,
24145
24339
  attrs: {
24146
24340
  spellcheck: false
24147
24341
  },
@@ -25636,6 +25830,11 @@ Object.keys(table.methods).forEach(name => {
25636
25830
  tableProps.editConfig = Object.assign({}, editConfig);
25637
25831
  }
25638
25832
  return tableProps;
25833
+ },
25834
+ computePageConfFlag() {
25835
+ const $xeGrid = this;
25836
+ const pagerOpts = $xeGrid.computePagerOpts;
25837
+ return `${pagerOpts.currentPage}${pagerOpts.pageSize}`;
25639
25838
  }
25640
25839
  },
25641
25840
  watch: {
@@ -25655,7 +25854,7 @@ Object.keys(table.methods).forEach(name => {
25655
25854
  proxyConfig() {
25656
25855
  this.initProxy();
25657
25856
  },
25658
- pagerConfig() {
25857
+ computePageConfFlag() {
25659
25858
  this.initPages();
25660
25859
  }
25661
25860
  },
@@ -26523,7 +26722,9 @@ Object.keys(table.methods).forEach(name => {
26523
26722
  const {
26524
26723
  proxyConfig
26525
26724
  } = this;
26725
+ const $xeTable = this.$refs.xTable;
26526
26726
  if (proxyConfig) {
26727
+ $xeTable.clearScroll();
26527
26728
  this.commitProxy('reload').then(rest => {
26528
26729
  this.$emit('proxy-query', {
26529
26730
  ...rest,