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
@@ -916,7 +916,6 @@ const Methods = {
916
916
  */
917
917
  loadData(datas) {
918
918
  const {
919
- inited,
920
919
  initStatus
921
920
  } = this;
922
921
  return this.loadTableData(datas).then(() => {
@@ -925,9 +924,6 @@ const Methods = {
925
924
  if (!initStatus) {
926
925
  this.handleLoadDefaults();
927
926
  }
928
- if (!inited) {
929
- this.handleInitDefaults();
930
- }
931
927
  return this.recalculate();
932
928
  });
933
929
  },
@@ -936,18 +932,12 @@ const Methods = {
936
932
  * @param {Array} datas 数据
937
933
  */
938
934
  reloadData(datas) {
939
- const {
940
- inited
941
- } = this;
942
935
  return this.clearAll().then(() => {
943
936
  this.inited = true;
944
937
  this.initStatus = true;
945
938
  return this.loadTableData(datas);
946
939
  }).then(() => {
947
940
  this.handleLoadDefaults();
948
- if (!inited) {
949
- this.handleInitDefaults();
950
- }
951
941
  return this.recalculate();
952
942
  });
953
943
  },
@@ -4671,29 +4661,84 @@ const Methods = {
4671
4661
  * @param {Array/Row} rows 行数据
4672
4662
  * @param {Boolean} value 是否选中
4673
4663
  */
4674
- setCheckboxRow(rows, value) {
4664
+ setCheckboxRow(rows, checked) {
4665
+ const $xeTable = this;
4675
4666
  if (rows && !_xeUtils.default.isArray(rows)) {
4676
4667
  rows = [rows];
4677
4668
  }
4678
- return this.handleCheckedCheckboxRow(rows, value, true);
4669
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
4670
+ },
4671
+ setCheckboxRowKey(keys, checked) {
4672
+ const $xeTable = this;
4673
+ const internalData = $xeTable;
4674
+ const {
4675
+ fullAllDataRowIdData
4676
+ } = internalData;
4677
+ if (keys && !_xeUtils.default.isArray(keys)) {
4678
+ keys = [keys];
4679
+ }
4680
+ const rows = [];
4681
+ keys.forEach(rowid => {
4682
+ const rowRest = fullAllDataRowIdData[rowid];
4683
+ if (rowRest) {
4684
+ rows.push(rowRest.row);
4685
+ }
4686
+ });
4687
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
4679
4688
  },
4680
4689
  isCheckedByCheckboxRow(row) {
4690
+ const $xeTable = this;
4691
+ const reactData = $xeTable;
4681
4692
  const {
4682
4693
  selectCheckboxMaps
4683
- } = this;
4694
+ } = reactData;
4695
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
4684
4696
  const {
4685
4697
  checkField
4686
- } = this.checkboxOpts;
4698
+ } = checkboxOpts;
4687
4699
  if (checkField) {
4688
4700
  return _xeUtils.default.get(row, checkField);
4689
4701
  }
4690
- return !!selectCheckboxMaps[(0, _util.getRowid)(this, row)];
4702
+ return !!selectCheckboxMaps[(0, _util.getRowid)($xeTable, row)];
4703
+ },
4704
+ isCheckedByCheckboxRowKey(rowid) {
4705
+ const $xeTable = this;
4706
+ const reactData = $xeTable;
4707
+ const internalData = $xeTable;
4708
+ const {
4709
+ selectCheckboxMaps
4710
+ } = reactData;
4711
+ const {
4712
+ fullAllDataRowIdData
4713
+ } = internalData;
4714
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
4715
+ const {
4716
+ checkField
4717
+ } = checkboxOpts;
4718
+ if (checkField) {
4719
+ const rowRest = fullAllDataRowIdData[rowid];
4720
+ if (rowRest) {
4721
+ return _xeUtils.default.get(rowRest.row, checkField);
4722
+ }
4723
+ return false;
4724
+ }
4725
+ return !!selectCheckboxMaps[rowid];
4691
4726
  },
4692
4727
  isIndeterminateByCheckboxRow(row) {
4728
+ const $xeTable = this;
4729
+ const reactData = $xeTable;
4693
4730
  const {
4694
4731
  treeIndeterminateMaps
4695
- } = this;
4696
- return !!treeIndeterminateMaps[(0, _util.getRowid)(this, row)] && !this.isCheckedByCheckboxRow(row);
4732
+ } = reactData;
4733
+ return !!treeIndeterminateMaps[(0, _util.getRowid)($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
4734
+ },
4735
+ isIndeterminateByCheckboxRowKey(rowid) {
4736
+ const $xeTable = this;
4737
+ const reactData = $xeTable;
4738
+ const {
4739
+ treeIndeterminateMaps
4740
+ } = reactData;
4741
+ return !!treeIndeterminateMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
4697
4742
  },
4698
4743
  /**
4699
4744
  * 切换选中
@@ -5599,7 +5644,26 @@ const Methods = {
5599
5644
  return this.$nextTick();
5600
5645
  },
5601
5646
  isCheckedByRadioRow(row) {
5602
- return this.selectRadioRow === row;
5647
+ const $xeTable = this;
5648
+ const reactData = $xeTable;
5649
+ const {
5650
+ selectRadioRow
5651
+ } = reactData;
5652
+ if (row && selectRadioRow) {
5653
+ return $xeTable.eqRow(selectRadioRow, row);
5654
+ }
5655
+ return false;
5656
+ },
5657
+ isCheckedByRadioRowKey(key) {
5658
+ const $xeTable = this;
5659
+ const reactData = $xeTable;
5660
+ const {
5661
+ selectRadioRow
5662
+ } = reactData;
5663
+ if (selectRadioRow) {
5664
+ return key === (0, _util.getRowid)($xeTable, selectRadioRow);
5665
+ }
5666
+ return false;
5603
5667
  },
5604
5668
  handleCheckedRadioRow(row, isForce) {
5605
5669
  const {
@@ -5621,7 +5685,24 @@ const Methods = {
5621
5685
  * @param {Row} row 行对象
5622
5686
  */
5623
5687
  setRadioRow(row) {
5624
- return this.handleCheckedRadioRow(row, true);
5688
+ const $xeTable = this;
5689
+ return $xeTable.handleCheckedRadioRow(row, true);
5690
+ },
5691
+ /**
5692
+ * 用于单选行,设置某一行为选中状态
5693
+ * @param key 行主键
5694
+ */
5695
+ setRadioRowKey(rowid) {
5696
+ const $xeTable = this;
5697
+ const internalData = $xeTable;
5698
+ const {
5699
+ fullAllDataRowIdData
5700
+ } = internalData;
5701
+ const rowRest = fullAllDataRowIdData[rowid];
5702
+ if (rowRest) {
5703
+ return $xeTable.handleCheckedRadioRow(rowRest.row, true);
5704
+ }
5705
+ return $xeTable.$nextTick();
5625
5706
  },
5626
5707
  /**
5627
5708
  * 用于当前行,手动清空当前高亮的状态
@@ -5776,6 +5857,7 @@ const Methods = {
5776
5857
  * 如果是双击模式,则单击后选中状态
5777
5858
  */
5778
5859
  triggerCellClickEvent(evnt, params) {
5860
+ const $xeTable = this;
5779
5861
  const {
5780
5862
  highlightCurrentRow,
5781
5863
  editStore,
@@ -5865,6 +5947,20 @@ const Methods = {
5865
5947
  }
5866
5948
  }
5867
5949
  }
5950
+ // 如果是双击编辑模式
5951
+ if ((0, _utils.isEnableConf)(editConfig) && editOpts.trigger === 'dblclick') {
5952
+ if (actived.row && actived.column) {
5953
+ if (editOpts.mode === 'row') {
5954
+ if (!$xeTable.eqRow(actived.row, row)) {
5955
+ $xeTable.handleClearEdit(evnt);
5956
+ }
5957
+ } else if (editOpts.mode === 'cell') {
5958
+ if (!$xeTable.eqRow(actived.row, row) || actived.column.id !== column.id) {
5959
+ $xeTable.handleClearEdit(evnt);
5960
+ }
5961
+ }
5962
+ }
5963
+ }
5868
5964
  this.emitEvent('cell-click', params, evnt);
5869
5965
  },
5870
5966
  /**
@@ -5978,6 +6074,94 @@ const Methods = {
5978
6074
  $xeTable.handleColumnSortEvent(evnt, column);
5979
6075
  }
5980
6076
  },
6077
+ /**
6078
+ * 表头单元格按下事件
6079
+ */
6080
+ triggerHeaderCellMousedownEvent(evnt, params) {
6081
+ const $xeTable = this;
6082
+ const props = $xeTable;
6083
+ const {
6084
+ mouseConfig
6085
+ } = props;
6086
+ const mouseOpts = $xeTable.computeMouseOpts;
6087
+ const columnOpts = $xeTable.computeColumnOpts;
6088
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
6089
+ const {
6090
+ trigger,
6091
+ disabledMethod
6092
+ } = columnDragOpts;
6093
+ const cell = evnt.currentTarget;
6094
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
6095
+ const triggerCheckbox = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
6096
+ const triggerSort = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--sort').flag;
6097
+ const triggerFilter = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--filter').flag;
6098
+ let triggerDrag = false;
6099
+ if (!(triggerInput || triggerCheckbox || triggerSort || triggerFilter)) {
6100
+ if (columnOpts.drag && trigger === 'cell' && !(disabledMethod && disabledMethod(params))) {
6101
+ triggerDrag = true;
6102
+ $xeTable.handleHeaderCellDragMousedownEvent(evnt, params);
6103
+ }
6104
+ }
6105
+ if (!triggerDrag && mouseConfig && mouseOpts.area && $xeTable.handleHeaderCellAreaEvent) {
6106
+ $xeTable.handleHeaderCellAreaEvent(evnt, Object.assign({
6107
+ cell,
6108
+ triggerSort,
6109
+ triggerFilter
6110
+ }, params));
6111
+ }
6112
+ $xeTable.focus();
6113
+ if ($xeTable.closeMenu) {
6114
+ $xeTable.closeMenu();
6115
+ }
6116
+ },
6117
+ /**
6118
+ * 单元格按下事件
6119
+ */
6120
+ triggerCellMousedownEvent(evnt, params) {
6121
+ const $xeTable = this;
6122
+ const {
6123
+ column
6124
+ } = params;
6125
+ const {
6126
+ type,
6127
+ treeNode
6128
+ } = column;
6129
+ const isRadioType = type === 'radio';
6130
+ const isCheckboxType = type === 'checkbox';
6131
+ const isExpandType = type === 'expand';
6132
+ const rowOpts = $xeTable.computeRowOpts;
6133
+ const rowDragOpts = $xeTable.computeRowDragOpts;
6134
+ const {
6135
+ trigger,
6136
+ disabledMethod
6137
+ } = rowDragOpts;
6138
+ const cell = evnt.currentTarget;
6139
+ params.cell = cell;
6140
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
6141
+ const triggerRadio = isRadioType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--radio').flag;
6142
+ const triggerCheckbox = isCheckboxType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
6143
+ const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-tree--btn-wrapper').flag;
6144
+ const triggerExpandNode = isExpandType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-table--expanded').flag;
6145
+ let isColDragCell = false;
6146
+ if (rowOpts.drag) {
6147
+ isColDragCell = trigger === 'row' || column.dragSort && trigger === 'cell';
6148
+ }
6149
+ let triggerDrag = false;
6150
+ if (!(triggerInput || triggerRadio || triggerCheckbox || triggerTreeNode || triggerExpandNode)) {
6151
+ if (isColDragCell && !(disabledMethod && disabledMethod(params))) {
6152
+ triggerDrag = true;
6153
+ $xeTable.handleCellDragMousedownEvent(evnt, params);
6154
+ }
6155
+ }
6156
+ if (!triggerDrag && $xeTable.handleCellMousedownEvent) {
6157
+ $xeTable.handleCellMousedownEvent(evnt, params);
6158
+ }
6159
+ $xeTable.focus();
6160
+ $xeTable.closeFilter();
6161
+ if ($xeTable.closeMenu) {
6162
+ $xeTable.closeMenu();
6163
+ }
6164
+ },
5981
6165
  /**
5982
6166
  * 行拖拽
5983
6167
  */
@@ -6239,18 +6423,20 @@ const Methods = {
6239
6423
  const $xeTable = this;
6240
6424
  const props = $xeTable;
6241
6425
  const reactData = $xeTable;
6426
+ evnt.stopPropagation();
6242
6427
  const {
6243
6428
  dragConfig
6244
6429
  } = props;
6245
6430
  const rowDragOpts = $xeTable.computeRowDragOpts;
6246
6431
  const {
6432
+ trigger,
6247
6433
  dragStartMethod
6248
6434
  } = rowDragOpts;
6249
6435
  const {
6250
6436
  row
6251
6437
  } = params;
6252
6438
  const dragEl = evnt.currentTarget;
6253
- const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
6439
+ const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
6254
6440
  const trEl = tdEl.parentElement;
6255
6441
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
6256
6442
  reactData.isDragRowMove = false;
@@ -6511,15 +6697,17 @@ const Methods = {
6511
6697
  var _a;
6512
6698
  const $xeTable = this;
6513
6699
  const reactData = $xeTable;
6700
+ evnt.stopPropagation();
6514
6701
  const columnDragOpts = $xeTable.computeColumnDragOpts;
6515
6702
  const {
6703
+ trigger,
6516
6704
  dragStartMethod
6517
6705
  } = columnDragOpts;
6518
6706
  const {
6519
6707
  column
6520
6708
  } = params;
6521
6709
  const dragEl = evnt.currentTarget;
6522
- const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
6710
+ const thEl = trigger === 'cell' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
6523
6711
  reactData.isDragColMove = false;
6524
6712
  clearColDropOrigin($xeTable);
6525
6713
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -6546,62 +6734,67 @@ const Methods = {
6546
6734
  reactData.isDragColMove = false;
6547
6735
  },
6548
6736
  setPendingRow(rows, status) {
6549
- const pendingMaps = Object.assign({}, this.pendingRowMaps);
6550
- const pendingList = [...this.pendingRowList];
6737
+ const $xeTable = this;
6738
+ const reactData = $xeTable;
6739
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
6551
6740
  if (rows && !_xeUtils.default.isArray(rows)) {
6552
6741
  rows = [rows];
6553
6742
  }
6554
6743
  if (status) {
6555
6744
  rows.forEach(row => {
6556
- const rowid = (0, _util.getRowid)(this, row);
6745
+ const rowid = (0, _util.getRowid)($xeTable, row);
6557
6746
  if (rowid && !pendingMaps[rowid]) {
6558
- pendingList.push(row);
6559
6747
  pendingMaps[rowid] = row;
6560
6748
  }
6561
6749
  });
6562
6750
  } else {
6563
6751
  rows.forEach(row => {
6564
- const rowid = (0, _util.getRowid)(this, row);
6752
+ const rowid = (0, _util.getRowid)($xeTable, row);
6565
6753
  if (rowid && pendingMaps[rowid]) {
6566
- const pendingIndex = this.findRowIndexOf(pendingList, row);
6567
- if (pendingIndex > -1) {
6568
- pendingList.splice(pendingIndex, 1);
6569
- }
6570
6754
  delete pendingMaps[rowid];
6571
6755
  }
6572
6756
  });
6573
6757
  }
6574
- this.pendingRowMaps = pendingMaps;
6575
- this.pendingRowList = pendingList;
6576
- return this.$nextTick();
6758
+ reactData.pendingRowMaps = pendingMaps;
6759
+ return $xeTable.$nextTick();
6577
6760
  },
6578
6761
  togglePendingRow(rows) {
6579
- const pendingMaps = Object.assign({}, this.pendingRowMaps);
6580
- const pendingList = [...this.pendingRowList];
6762
+ const $xeTable = this;
6763
+ const reactData = $xeTable;
6764
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
6581
6765
  if (rows && !_xeUtils.default.isArray(rows)) {
6582
6766
  rows = [rows];
6583
6767
  }
6584
6768
  rows.forEach(row => {
6585
- const rowid = (0, _util.getRowid)(this, row);
6769
+ const rowid = (0, _util.getRowid)($xeTable, row);
6586
6770
  if (rowid) {
6587
6771
  if (pendingMaps[rowid]) {
6588
- const pendingIndex = this.findRowIndexOf(pendingList, row);
6589
- if (pendingIndex > -1) {
6590
- pendingList.splice(pendingIndex, 1);
6591
- }
6592
6772
  delete pendingMaps[rowid];
6593
6773
  } else {
6594
- pendingList.push(row);
6595
6774
  pendingMaps[rowid] = row;
6596
6775
  }
6597
6776
  }
6598
6777
  });
6599
- this.pendingRowMaps = pendingMaps;
6600
- this.pendingRowList = pendingList;
6601
- return this.$nextTick();
6778
+ reactData.pendingRowMaps = pendingMaps;
6779
+ return $xeTable.$nextTick();
6602
6780
  },
6603
6781
  getPendingRecords() {
6604
- return this.pendingRowList.slice(0);
6782
+ const $xeTable = this;
6783
+ const reactData = $xeTable;
6784
+ const internalData = $xeTable;
6785
+ const {
6786
+ pendingRowMaps
6787
+ } = reactData;
6788
+ const {
6789
+ fullAllDataRowIdData
6790
+ } = internalData;
6791
+ const insertRecords = [];
6792
+ _xeUtils.default.each(pendingRowMaps, (row, rowid) => {
6793
+ if (fullAllDataRowIdData[rowid]) {
6794
+ insertRecords.push(row);
6795
+ }
6796
+ });
6797
+ return insertRecords;
6605
6798
  },
6606
6799
  hasPendingByRow(row) {
6607
6800
  const {
@@ -6612,7 +6805,6 @@ const Methods = {
6612
6805
  },
6613
6806
  clearPendingRow() {
6614
6807
  this.pendingRowMaps = {};
6615
- this.pendingRowList = [];
6616
6808
  return this.$nextTick();
6617
6809
  },
6618
6810
  sort(sortConfs, sortOrder) {
@@ -7746,6 +7938,8 @@ const Methods = {
7746
7938
  }
7747
7939
  internalData.lastScrollTop = scrollTop;
7748
7940
  }
7941
+ reactData.isDragColMove = false;
7942
+ reactData.isDragRowMove = false;
7749
7943
  reactData.lastScrollTime = Date.now();
7750
7944
  const evntParams = Object.assign({
7751
7945
  scrollTop,