vxe-table 4.9.26 → 4.9.28

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 +7 -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/edit/hook.js +10 -3
  7. package/es/table/module/keyboard/hook.js +2 -31
  8. package/es/table/src/body.js +16 -4
  9. package/es/table/src/cell.js +21 -21
  10. package/es/table/src/header.js +21 -5
  11. package/es/table/src/table.js +106 -39
  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 +7 -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 +207 -110
  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/edit/hook.js +10 -4
  27. package/lib/table/module/edit/hook.min.js +1 -1
  28. package/lib/table/module/keyboard/hook.js +1 -36
  29. package/lib/table/module/keyboard/hook.min.js +1 -1
  30. package/lib/table/src/body.js +18 -4
  31. package/lib/table/src/body.min.js +1 -1
  32. package/lib/table/src/cell.js +27 -19
  33. package/lib/table/src/cell.min.js +1 -1
  34. package/lib/table/src/header.js +23 -7
  35. package/lib/table/src/header.min.js +1 -1
  36. package/lib/table/src/table.js +122 -39
  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 +8 -1
  48. package/packages/table/module/edit/hook.ts +10 -3
  49. package/packages/table/module/keyboard/hook.ts +2 -31
  50. package/packages/table/src/body.ts +16 -4
  51. package/packages/table/src/cell.ts +23 -15
  52. package/packages/table/src/header.ts +20 -6
  53. package/packages/table/src/table.ts +107 -42
  54. package/styles/components/table.scss +36 -0
  55. /package/es/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
  56. /package/es/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
  57. /package/es/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
  58. /package/lib/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
  59. /package/lib/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
  60. /package/lib/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
@@ -128,8 +128,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
128
128
  reColumnFlag: 0,
129
129
  // 已标记的对象集
130
130
  pendingRowMaps: {},
131
- // 已标记的行
132
- pendingRowList: [],
133
131
  // 初始化标识
134
132
  initStore: {
135
133
  filter: false,
@@ -3710,7 +3708,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
3710
3708
  */
3711
3709
  loadData(datas) {
3712
3710
  const {
3713
- inited,
3714
3711
  initStatus
3715
3712
  } = internalData;
3716
3713
  return loadTableData(datas).then(() => {
@@ -3719,9 +3716,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
3719
3716
  if (!initStatus) {
3720
3717
  handleLoadDefaults();
3721
3718
  }
3722
- if (!inited) {
3723
- handleInitDefaults();
3724
- }
3725
3719
  return tableMethods.recalculate();
3726
3720
  });
3727
3721
  },
@@ -3730,18 +3724,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
3730
3724
  * @param {Array} datas 数据
3731
3725
  */
3732
3726
  reloadData(datas) {
3733
- const {
3734
- inited
3735
- } = internalData;
3736
3727
  return tableMethods.clearAll().then(() => {
3737
3728
  internalData.inited = true;
3738
3729
  internalData.initStatus = true;
3739
3730
  return loadTableData(datas);
3740
3731
  }).then(() => {
3741
3732
  handleLoadDefaults();
3742
- if (!inited) {
3743
- handleInitDefaults();
3744
- }
3745
3733
  return tableMethods.recalculate();
3746
3734
  });
3747
3735
  },
@@ -5150,7 +5138,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
5150
5138
  },
5151
5139
  setPendingRow(rows, status) {
5152
5140
  const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
5153
- const pendingList = [...reactData.pendingRowList];
5154
5141
  if (rows && !_xeUtils.default.isArray(rows)) {
5155
5142
  rows = [rows];
5156
5143
  }
@@ -5158,7 +5145,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
5158
5145
  rows.forEach(row => {
5159
5146
  const rowid = (0, _util.getRowid)($xeTable, row);
5160
5147
  if (rowid && !pendingMaps[rowid]) {
5161
- pendingList.push(row);
5162
5148
  pendingMaps[rowid] = row;
5163
5149
  }
5164
5150
  });
@@ -5166,21 +5152,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
5166
5152
  rows.forEach(row => {
5167
5153
  const rowid = (0, _util.getRowid)($xeTable, row);
5168
5154
  if (rowid && pendingMaps[rowid]) {
5169
- const pendingIndex = $xeTable.findRowIndexOf(pendingList, row);
5170
- if (pendingIndex > -1) {
5171
- pendingList.splice(pendingIndex, 1);
5172
- }
5173
5155
  delete pendingMaps[rowid];
5174
5156
  }
5175
5157
  });
5176
5158
  }
5177
5159
  reactData.pendingRowMaps = pendingMaps;
5178
- reactData.pendingRowList = pendingList;
5179
5160
  return (0, _vue.nextTick)();
5180
5161
  },
5181
5162
  togglePendingRow(rows) {
5182
5163
  const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
5183
- const pendingList = [...reactData.pendingRowList];
5184
5164
  if (rows && !_xeUtils.default.isArray(rows)) {
5185
5165
  rows = [rows];
5186
5166
  }
@@ -5188,19 +5168,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
5188
5168
  const rowid = (0, _util.getRowid)($xeTable, row);
5189
5169
  if (rowid) {
5190
5170
  if (pendingMaps[rowid]) {
5191
- const pendingIndex = $xeTable.findRowIndexOf(pendingList, row);
5192
- if (pendingIndex > -1) {
5193
- pendingList.splice(pendingIndex, 1);
5194
- }
5195
5171
  delete pendingMaps[rowid];
5196
5172
  } else {
5197
- pendingList.push(row);
5198
5173
  pendingMaps[rowid] = row;
5199
5174
  }
5200
5175
  }
5201
5176
  });
5202
5177
  reactData.pendingRowMaps = pendingMaps;
5203
- reactData.pendingRowList = pendingList;
5204
5178
  return (0, _vue.nextTick)();
5205
5179
  },
5206
5180
  hasPendingByRow(row) {
@@ -5215,13 +5189,21 @@ var _default = exports.default = (0, _vue.defineComponent)({
5215
5189
  },
5216
5190
  getPendingRecords() {
5217
5191
  const {
5218
- pendingRowList
5192
+ pendingRowMaps
5219
5193
  } = reactData;
5220
- return pendingRowList.slice(0);
5194
+ const {
5195
+ fullAllDataRowIdData
5196
+ } = internalData;
5197
+ const insertRecords = [];
5198
+ _xeUtils.default.each(pendingRowMaps, (row, rowid) => {
5199
+ if (fullAllDataRowIdData[rowid]) {
5200
+ insertRecords.push(row);
5201
+ }
5202
+ });
5203
+ return insertRecords;
5221
5204
  },
5222
5205
  clearPendingRow() {
5223
5206
  reactData.pendingRowMaps = {};
5224
- reactData.pendingRowList = [];
5225
5207
  return (0, _vue.nextTick)();
5226
5208
  },
5227
5209
  sort(sortConfs, sortOrder) {
@@ -7978,6 +7960,20 @@ var _default = exports.default = (0, _vue.defineComponent)({
7978
7960
  }
7979
7961
  }
7980
7962
  }
7963
+ // 如果是双击编辑模式
7964
+ if ((0, _utils.isEnableConf)(editConfig) && editOpts.trigger === 'dblclick') {
7965
+ if (actived.row && actived.column) {
7966
+ if (editOpts.mode === 'row') {
7967
+ if (!$xeTable.eqRow(actived.row, row)) {
7968
+ $xeTable.handleClearEdit(evnt);
7969
+ }
7970
+ } else if (editOpts.mode === 'cell') {
7971
+ if (!$xeTable.eqRow(actived.row, row) || actived.column.id !== column.id) {
7972
+ $xeTable.handleClearEdit(evnt);
7973
+ }
7974
+ }
7975
+ }
7976
+ }
7981
7977
  dispatchEvent('cell-click', params, evnt);
7982
7978
  },
7983
7979
  /**
@@ -8295,6 +8291,91 @@ var _default = exports.default = (0, _vue.defineComponent)({
8295
8291
  $xeTable.handleColumnSortEvent(evnt, column);
8296
8292
  }
8297
8293
  },
8294
+ /**
8295
+ * 表头单元格按下事件
8296
+ */
8297
+ triggerHeaderCellMousedownEvent(evnt, params) {
8298
+ const {
8299
+ mouseConfig
8300
+ } = props;
8301
+ const mouseOpts = computeMouseOpts.value;
8302
+ const columnOpts = computeColumnOpts.value;
8303
+ const columnDragOpts = computeColumnDragOpts.value;
8304
+ const {
8305
+ trigger,
8306
+ disabledMethod
8307
+ } = columnDragOpts;
8308
+ const cell = evnt.currentTarget;
8309
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
8310
+ const triggerCheckbox = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
8311
+ const triggerSort = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--sort').flag;
8312
+ const triggerFilter = (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--filter').flag;
8313
+ let triggerDrag = false;
8314
+ if (!(triggerInput || triggerCheckbox || triggerSort || triggerFilter)) {
8315
+ if (columnOpts.drag && trigger === 'cell' && !(disabledMethod && disabledMethod(params))) {
8316
+ triggerDrag = true;
8317
+ $xeTable.handleHeaderCellDragMousedownEvent(evnt, params);
8318
+ }
8319
+ }
8320
+ if (!triggerDrag && mouseConfig && mouseOpts.area && $xeTable.handleHeaderCellAreaEvent) {
8321
+ $xeTable.handleHeaderCellAreaEvent(evnt, Object.assign({
8322
+ cell,
8323
+ triggerSort,
8324
+ triggerFilter
8325
+ }, params));
8326
+ }
8327
+ $xeTable.focus();
8328
+ if ($xeTable.closeMenu) {
8329
+ $xeTable.closeMenu();
8330
+ }
8331
+ },
8332
+ /**
8333
+ * 单元格按下事件
8334
+ */
8335
+ triggerCellMousedownEvent(evnt, params) {
8336
+ const {
8337
+ column
8338
+ } = params;
8339
+ const {
8340
+ type,
8341
+ treeNode
8342
+ } = column;
8343
+ const isRadioType = type === 'radio';
8344
+ const isCheckboxType = type === 'checkbox';
8345
+ const isExpandType = type === 'expand';
8346
+ const rowOpts = computeRowOpts.value;
8347
+ const rowDragOpts = computeRowDragOpts.value;
8348
+ const {
8349
+ trigger,
8350
+ disabledMethod
8351
+ } = rowDragOpts;
8352
+ const cell = evnt.currentTarget;
8353
+ params.cell = cell;
8354
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
8355
+ const triggerRadio = isRadioType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--radio').flag;
8356
+ const triggerCheckbox = isCheckboxType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
8357
+ const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-tree--btn-wrapper').flag;
8358
+ const triggerExpandNode = isExpandType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-table--expanded').flag;
8359
+ let isColDragCell = false;
8360
+ if (rowOpts.drag) {
8361
+ isColDragCell = trigger === 'row' || column.dragSort && trigger === 'cell';
8362
+ }
8363
+ let triggerDrag = false;
8364
+ if (!(triggerInput || triggerRadio || triggerCheckbox || triggerTreeNode || triggerExpandNode)) {
8365
+ if (isColDragCell && !(disabledMethod && disabledMethod(params))) {
8366
+ triggerDrag = true;
8367
+ $xeTable.handleCellDragMousedownEvent(evnt, params);
8368
+ }
8369
+ }
8370
+ if (!triggerDrag && $xeTable.handleCellMousedownEvent) {
8371
+ $xeTable.handleCellMousedownEvent(evnt, params);
8372
+ }
8373
+ $xeTable.focus();
8374
+ $xeTable.closeFilter();
8375
+ if ($xeTable.closeMenu) {
8376
+ $xeTable.closeMenu();
8377
+ }
8378
+ },
8298
8379
  /**
8299
8380
  * 行拖拽
8300
8381
  */
@@ -8545,21 +8626,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
8545
8626
  },
8546
8627
  handleCellDragMousedownEvent(evnt, params) {
8547
8628
  var _a;
8629
+ evnt.stopPropagation();
8548
8630
  const {
8549
8631
  dragConfig
8550
8632
  } = props;
8551
8633
  const rowDragOpts = computeRowDragOpts.value;
8552
8634
  const {
8635
+ trigger,
8553
8636
  dragStartMethod
8554
8637
  } = rowDragOpts;
8555
8638
  const {
8556
8639
  row
8557
8640
  } = params;
8558
8641
  const dragEl = evnt.currentTarget;
8559
- const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
8642
+ const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
8560
8643
  const trEl = tdEl.parentElement;
8561
8644
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
8562
- reactData.isDragRowMove = false;
8563
8645
  clearRowDropOrigin();
8564
8646
  if (dStartMethod && !dStartMethod(params)) {
8565
8647
  trEl.draggable = false;
@@ -8814,15 +8896,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
8814
8896
  },
8815
8897
  handleHeaderCellDragMousedownEvent(evnt, params) {
8816
8898
  var _a;
8899
+ evnt.stopPropagation();
8817
8900
  const columnDragOpts = computeColumnDragOpts.value;
8818
8901
  const {
8902
+ trigger,
8819
8903
  dragStartMethod
8820
8904
  } = columnDragOpts;
8821
8905
  const {
8822
8906
  column
8823
8907
  } = params;
8824
8908
  const dragEl = evnt.currentTarget;
8825
- const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
8909
+ const thEl = trigger === 'cell' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
8826
8910
  reactData.isDragColMove = false;
8827
8911
  clearColDropOrigin();
8828
8912
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -8911,6 +8995,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
8911
8995
  }
8912
8996
  internalData.lastScrollTop = scrollTop;
8913
8997
  }
8998
+ reactData.isDragColMove = false;
8999
+ reactData.isDragRowMove = false;
8914
9000
  reactData.lastScrollTime = Date.now();
8915
9001
  const evntParams = Object.assign({
8916
9002
  scrollTop,
@@ -9418,6 +9504,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9418
9504
  const resizableOpts = computeResizableOpts.value;
9419
9505
  const isArea = mouseConfig && mouseOpts.area;
9420
9506
  const tableStyle = computeTableStyle.value;
9507
+ const columnDragOpts = computeColumnDragOpts.value;
9421
9508
  return (0, _vue.h)('div', {
9422
9509
  ref: refElem,
9423
9510
  class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
@@ -9434,6 +9521,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9434
9521
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
9435
9522
  'checkbox--range': checkboxOpts.range,
9436
9523
  'column--calc': isCalcColumn,
9524
+ 'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
9437
9525
  'is--header': showHeader,
9438
9526
  'is--footer': showFooter,
9439
9527
  'is--group': isGroup,
@@ -9653,7 +9741,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
9653
9741
  });
9654
9742
  (0, _vue.watch)(dataFlag, () => {
9655
9743
  const {
9656
- inited,
9657
9744
  initStatus
9658
9745
  } = internalData;
9659
9746
  loadTableData(props.data || []).then(() => {
@@ -9667,9 +9754,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
9667
9754
  if (!initStatus) {
9668
9755
  handleLoadDefaults();
9669
9756
  }
9670
- if (!inited) {
9671
- handleInitDefaults();
9672
- }
9673
9757
  if (process.env.NODE_ENV === 'development') {
9674
9758
  // const checkboxOpts = computeCheckboxOpts.value
9675
9759
  // const checkboxColumn = internalData.tableFullColumn.find(column => column.type === 'checkbox')
@@ -9945,7 +10029,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9945
10029
  if (props.editRules && !$xeTable.validate) {
9946
10030
  (0, _log.errLog)('vxe.error.reqModule', ['Validator']);
9947
10031
  }
9948
- if ((checkboxOpts.range || props.keyboardConfig || props.mouseConfig) && !$xeTable.triggerCellMousedownEvent) {
10032
+ if ((checkboxOpts.range || props.keyboardConfig || props.mouseConfig) && !$xeTable.handleCellMousedownEvent) {
9949
10033
  (0, _log.errLog)('vxe.error.reqModule', ['Keyboard']);
9950
10034
  }
9951
10035
  if ((props.printConfig || props.importConfig || props.exportConfig) && !$xeTable.exportData) {
@@ -9968,8 +10052,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
9968
10052
  internalData.inited = true;
9969
10053
  internalData.initStatus = true;
9970
10054
  handleLoadDefaults();
9971
- handleInitDefaults();
9972
10055
  }
10056
+ handleInitDefaults();
9973
10057
  updateStyle();
9974
10058
  });
9975
10059
  if (props.autoResize) {
@@ -10013,7 +10097,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
10013
10097
  $table: $xeTable
10014
10098
  });
10015
10099
  });
10016
- window.aaaa = $xeTable;
10017
10100
  (0, _vue.onBeforeUnmount)(() => {
10018
10101
  if (resizeObserver) {
10019
10102
  resizeObserver.disconnect();