vxe-table 3.10.7 → 3.10.9

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 (40) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/custom/panel.js +3 -2
  3. package/es/table/src/body.js +4 -8
  4. package/es/table/src/cell.js +7 -3
  5. package/es/table/src/footer.js +2 -4
  6. package/es/table/src/header.js +2 -2
  7. package/es/table/src/methods.js +206 -79
  8. package/es/ui/index.js +1 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/index.umd.js +225 -100
  11. package/lib/index.umd.min.js +1 -1
  12. package/lib/style.css +1 -1
  13. package/lib/table/module/custom/panel.js +2 -1
  14. package/lib/table/module/custom/panel.min.js +1 -1
  15. package/lib/table/src/body.js +4 -8
  16. package/lib/table/src/body.min.js +1 -1
  17. package/lib/table/src/cell.js +10 -3
  18. package/lib/table/src/cell.min.js +1 -1
  19. package/lib/table/src/footer.js +2 -4
  20. package/lib/table/src/footer.min.js +1 -1
  21. package/lib/table/src/header.js +2 -2
  22. package/lib/table/src/methods.js +204 -81
  23. package/lib/table/src/methods.min.js +1 -1
  24. package/lib/ui/index.js +1 -1
  25. package/lib/ui/index.min.js +1 -1
  26. package/lib/ui/src/log.js +1 -1
  27. package/lib/ui/src/log.min.js +1 -1
  28. package/package.json +2 -2
  29. package/packages/table/module/custom/panel.ts +5 -2
  30. package/packages/table/src/body.ts +4 -8
  31. package/packages/table/src/cell.ts +9 -5
  32. package/packages/table/src/footer.ts +2 -4
  33. package/packages/table/src/header.ts +2 -2
  34. package/packages/table/src/methods.ts +210 -77
  35. /package/es/{iconfont.1731028570313.ttf → iconfont.1731143527990.ttf} +0 -0
  36. /package/es/{iconfont.1731028570313.woff → iconfont.1731143527990.woff} +0 -0
  37. /package/es/{iconfont.1731028570313.woff2 → iconfont.1731143527990.woff2} +0 -0
  38. /package/lib/{iconfont.1731028570313.ttf → iconfont.1731143527990.ttf} +0 -0
  39. /package/lib/{iconfont.1731028570313.woff → iconfont.1731143527990.woff} +0 -0
  40. /package/lib/{iconfont.1731028570313.woff2 → iconfont.1731143527990.woff2} +0 -0
@@ -397,6 +397,16 @@ function clearRowDropOrigin($xeTable) {
397
397
  });
398
398
  }
399
399
  }
400
+ function updateRowDropOrigin($xeTable, row) {
401
+ const el = $xeTable.$el;
402
+ if (el) {
403
+ const clss = 'row--drag-origin';
404
+ const rowid = (0, _util.getRowid)($xeTable, row);
405
+ _xeUtils.default.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), elem => {
406
+ (0, _dom.addClass)(elem, clss);
407
+ });
408
+ }
409
+ }
400
410
  function clearRowDropTarget($xeTable) {
401
411
  const el = $xeTable.$el;
402
412
  if (el) {
@@ -406,6 +416,17 @@ function clearRowDropTarget($xeTable) {
406
416
  });
407
417
  }
408
418
  }
419
+ function updateRowDropTarget($xeTable, row, dragPos) {
420
+ const el = $xeTable.$el;
421
+ if (el) {
422
+ const clss = 'row--drag-active-target';
423
+ const rowid = (0, _util.getRowid)($xeTable, row);
424
+ _xeUtils.default.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), elem => {
425
+ (0, _dom.addClass)(elem, clss);
426
+ elem.setAttribute('drag-pos', dragPos);
427
+ });
428
+ }
429
+ }
409
430
  function showRowDropTip(evnt, $xeTable) {
410
431
  const rdTipEl = $xeTable.$refs.refRowDragTipElem;
411
432
  if (!rdTipEl) {
@@ -2167,85 +2188,132 @@ const Methods = {
2167
2188
  * 设置为固定列
2168
2189
  */
2169
2190
  setColumnFixed(fieldOrColumn, fixed) {
2170
- const {
2171
- isMaxFixedColumn,
2172
- columnOpts
2173
- } = this;
2174
- const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
2175
- const targetColumn = (0, _util.getRootColumn)(this, column);
2176
- if (targetColumn && targetColumn.fixed !== fixed) {
2177
- // 是否超过最大固定列数量
2178
- if (!targetColumn.fixed && isMaxFixedColumn) {
2179
- if (_ui.VxeUI.modal) {
2180
- _ui.VxeUI.modal.message({
2181
- status: 'error',
2182
- content: getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
2183
- });
2191
+ const $xeTable = this;
2192
+ let status = false;
2193
+ const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
2194
+ const columnOpts = $xeTable.computeColumnOpts;
2195
+ const isMaxFixedColumn = $xeTable.computeIsMaxFixedColumn;
2196
+ for (let i = 0; i < cols.length; i++) {
2197
+ const item = cols[i];
2198
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
2199
+ const targetColumn = (0, _util.getRootColumn)($xeTable, column);
2200
+ if (targetColumn && targetColumn.fixed !== fixed) {
2201
+ // 是否超过最大固定列数量
2202
+ if (!targetColumn.fixed && isMaxFixedColumn) {
2203
+ if (_ui.VxeUI.modal) {
2204
+ _ui.VxeUI.modal.message({
2205
+ status: 'error',
2206
+ content: getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
2207
+ });
2208
+ }
2209
+ return $xeTable.$nextTick();
2210
+ }
2211
+ _xeUtils.default.eachTree([targetColumn], column => {
2212
+ column.fixed = fixed;
2213
+ });
2214
+ $xeTable.saveCustomStore('update:fixed');
2215
+ if (!status) {
2216
+ status = true;
2184
2217
  }
2185
- return this.$nextTick();
2186
2218
  }
2187
- _xeUtils.default.eachTree([targetColumn], column => {
2188
- column.fixed = fixed;
2189
- });
2190
- this.saveCustomStore('update:fixed');
2191
- return this.refreshColumn();
2192
2219
  }
2193
- return this.$nextTick();
2220
+ if (status) {
2221
+ return $xeTable.refreshColumn();
2222
+ }
2223
+ return $xeTable.$nextTick();
2194
2224
  },
2195
2225
  /**
2196
2226
  * 取消指定固定列
2197
2227
  */
2198
2228
  clearColumnFixed(fieldOrColumn) {
2199
- const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
2200
- const targetColumn = (0, _util.getRootColumn)(this, column);
2201
- if (targetColumn && targetColumn.fixed) {
2202
- _xeUtils.default.eachTree([targetColumn], column => {
2203
- column.fixed = null;
2204
- });
2205
- this.saveCustomStore('update:fixed');
2206
- return this.refreshColumn();
2229
+ const $xeTable = this;
2230
+ let status = false;
2231
+ const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
2232
+ cols.forEach(item => {
2233
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
2234
+ const targetColumn = (0, _util.getRootColumn)($xeTable, column);
2235
+ if (targetColumn && targetColumn.fixed) {
2236
+ _xeUtils.default.eachTree([targetColumn], column => {
2237
+ column.fixed = null;
2238
+ });
2239
+ $xeTable.saveCustomStore('update:fixed');
2240
+ if (!status) {
2241
+ status = true;
2242
+ }
2243
+ }
2244
+ });
2245
+ if (status) {
2246
+ return $xeTable.refreshColumn();
2207
2247
  }
2208
- return this.$nextTick();
2248
+ return $xeTable.$nextTick();
2209
2249
  },
2210
2250
  /**
2211
2251
  * 隐藏指定列
2212
2252
  */
2213
2253
  hideColumn(fieldOrColumn) {
2214
- const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
2215
- if (column && column.visible) {
2216
- column.visible = false;
2217
- return this.handleCustom();
2254
+ const $xeTable = this;
2255
+ let status = false;
2256
+ const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
2257
+ cols.forEach(item => {
2258
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
2259
+ if (column && column.visible) {
2260
+ column.visible = false;
2261
+ if (!status) {
2262
+ status = true;
2263
+ }
2264
+ }
2265
+ });
2266
+ if (status) {
2267
+ return $xeTable.handleCustom();
2218
2268
  }
2219
- return this.$nextTick();
2269
+ return $xeTable.$nextTick();
2220
2270
  },
2221
2271
  /**
2222
2272
  * 显示指定列
2223
2273
  */
2224
2274
  showColumn(fieldOrColumn) {
2225
- const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
2226
- if (column && !column.visible) {
2227
- column.visible = true;
2228
- return this.handleCustom();
2275
+ const $xeTable = this;
2276
+ let status = false;
2277
+ const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
2278
+ cols.forEach(item => {
2279
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
2280
+ if (column && !column.visible) {
2281
+ column.visible = true;
2282
+ if (!status) {
2283
+ status = true;
2284
+ }
2285
+ }
2286
+ });
2287
+ if (status) {
2288
+ return $xeTable.handleCustom();
2229
2289
  }
2230
- return this.$nextTick();
2290
+ return $xeTable.$nextTick();
2231
2291
  },
2232
2292
  setColumnWidth(fieldOrColumn, width) {
2233
- const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
2234
- if (column) {
2235
- const colWidth = _xeUtils.default.toInteger(width);
2236
- let rdWidth = colWidth;
2237
- if ((0, _dom.isScale)(width)) {
2238
- const {
2239
- tableBody
2240
- } = this.$refs;
2241
- const tableBodyElem = tableBody ? tableBody.$el : null;
2242
- const bodyWidth = tableBodyElem ? tableBodyElem.clientWidth - 1 : 0;
2243
- rdWidth = Math.floor(colWidth * bodyWidth);
2293
+ const $xeTable = this;
2294
+ let status = false;
2295
+ const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
2296
+ cols.forEach(item => {
2297
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
2298
+ if (column) {
2299
+ const colWidth = _xeUtils.default.toInteger(width);
2300
+ let rdWidth = colWidth;
2301
+ if ((0, _dom.isScale)(width)) {
2302
+ const tableBody = $xeTable.$refs.tableBody;
2303
+ const bodyElem = tableBody ? tableBody.$el : null;
2304
+ const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
2305
+ rdWidth = Math.floor(colWidth * bodyWidth);
2306
+ }
2307
+ column.resizeWidth = rdWidth;
2308
+ if (!status) {
2309
+ status = true;
2310
+ }
2244
2311
  }
2245
- column.resizeWidth = rdWidth;
2246
- return this.refreshColumn();
2312
+ });
2313
+ if (status) {
2314
+ return $xeTable.refreshColumn();
2247
2315
  }
2248
- return this.$nextTick();
2316
+ return $xeTable.$nextTick();
2249
2317
  },
2250
2318
  getColumnWidth(fieldOrColumn) {
2251
2319
  const column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
@@ -5496,7 +5564,9 @@ const Methods = {
5496
5564
  } = reactData;
5497
5565
  const {
5498
5566
  afterFullData,
5567
+ afterTreeFullData,
5499
5568
  tableFullData,
5569
+ tableFullTreeData,
5500
5570
  prevDragRow,
5501
5571
  prevDragPos
5502
5572
  } = internalData;
@@ -5511,18 +5581,35 @@ const Methods = {
5511
5581
  return;
5512
5582
  }
5513
5583
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
5514
- // 移出源位置
5515
- const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
5516
- const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
5517
- afterFullData.splice(oafIndex, 1);
5518
- tableFullData.splice(otfIndex, 1);
5519
- // 插新位置
5520
- const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
5521
- const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
5522
- const nafIndex = pafIndex + dragOffsetIndex;
5523
- const ntfIndex = ptfIndex + dragOffsetIndex;
5524
- afterFullData.splice(nafIndex, 0, dragRow);
5525
- tableFullData.splice(ntfIndex, 0, dragRow);
5584
+ let oafIndex = -1;
5585
+ let nafIndex = -1;
5586
+ if (treeConfig) {
5587
+ // 移出源位置
5588
+ oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow);
5589
+ const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow);
5590
+ afterTreeFullData.splice(oafIndex, 1);
5591
+ tableFullTreeData.splice(otfIndex, 1);
5592
+ // 插新位置
5593
+ const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow);
5594
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow);
5595
+ nafIndex = pafIndex + dragOffsetIndex;
5596
+ const ntfIndex = ptfIndex + dragOffsetIndex;
5597
+ afterTreeFullData.splice(nafIndex, 0, dragRow);
5598
+ tableFullTreeData.splice(ntfIndex, 0, dragRow);
5599
+ } else {
5600
+ // 移出源位置
5601
+ oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
5602
+ const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
5603
+ afterFullData.splice(oafIndex, 1);
5604
+ tableFullData.splice(otfIndex, 1);
5605
+ // 插新位置
5606
+ const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
5607
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
5608
+ nafIndex = pafIndex + dragOffsetIndex;
5609
+ const ntfIndex = ptfIndex + dragOffsetIndex;
5610
+ afterFullData.splice(nafIndex, 0, dragRow);
5611
+ tableFullData.splice(ntfIndex, 0, dragRow);
5612
+ }
5526
5613
  reactData.isDragRowMove = true;
5527
5614
  $xeTable.cacheRowMap();
5528
5615
  $xeTable.updateScrollYStatus();
@@ -5574,8 +5661,7 @@ const Methods = {
5574
5661
  } = reactData;
5575
5662
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
5576
5663
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
5577
- (0, _dom.addClass)(trEl, 'row--drag-active-target');
5578
- trEl.setAttribute('drag-pos', dragPos);
5664
+ updateRowDropTarget($xeTable, row, dragPos);
5579
5665
  internalData.prevDragRow = row;
5580
5666
  internalData.prevDragPos = dragPos;
5581
5667
  $xeTable.dispatchEvent('row-dragover', {
@@ -5611,7 +5697,7 @@ const Methods = {
5611
5697
  }
5612
5698
  reactData.dragRow = row;
5613
5699
  trEl.draggable = true;
5614
- (0, _dom.addClass)(trEl, 'row--drag-origin');
5700
+ updateRowDropOrigin($xeTable, row);
5615
5701
  showRowDropTip(evnt, $xeTable);
5616
5702
  updateRowDropTipContent($xeTable, tdEl);
5617
5703
  $xeTable.dispatchEvent('row-dragstart', params, evnt);
@@ -6696,7 +6782,7 @@ const Methods = {
6696
6782
  }
6697
6783
  this.closeTooltip();
6698
6784
  },
6699
- handleScrollEvent(evnt, isRollY, isRollX, params) {
6785
+ handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, params) {
6700
6786
  const $xeTable = this;
6701
6787
  const props = $xeTable;
6702
6788
  const {
@@ -6723,13 +6809,35 @@ const Methods = {
6723
6809
  const bodyWidth = bodyElem ? bodyElem.clientWidth : 0;
6724
6810
  const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0;
6725
6811
  const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0;
6812
+ let isTop = false;
6813
+ let isBottom = false;
6814
+ let isLeft = false;
6815
+ let isRight = false;
6816
+ if (isRollX) {
6817
+ isLeft = scrollLeft <= 0;
6818
+ if (!isTop) {
6819
+ isRight = scrollLeft + bodyWidth >= scrollWidth;
6820
+ }
6821
+ $xeTable.checkScrolling();
6822
+ } else {
6823
+ isTop = scrollTop <= 0;
6824
+ if (!isTop) {
6825
+ isBottom = scrollTop + bodyHeight >= scrollHeight;
6826
+ }
6827
+ }
6726
6828
  const evntParams = Object.assign({
6829
+ scrollTop,
6830
+ scrollLeft,
6727
6831
  bodyHeight,
6728
6832
  bodyWidth,
6729
6833
  scrollHeight,
6730
6834
  scrollWidth,
6731
6835
  isX: isRollX,
6732
- isY: isRollY
6836
+ isY: isRollY,
6837
+ isTop,
6838
+ isBottom,
6839
+ isLeft,
6840
+ isRight
6733
6841
  }, params);
6734
6842
  $xeTable.dispatchEvent('scroll', evntParams, evnt);
6735
6843
  },
@@ -6786,11 +6894,9 @@ const Methods = {
6786
6894
  $xeTable.lastScrollTime = Date.now();
6787
6895
  $xeTable.handleSyncScrollX(scrollLeft);
6788
6896
  $xeTable.triggerScrollXEvent(evnt);
6789
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
6897
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
6790
6898
  type: 'table',
6791
- fixed: '',
6792
- scrollTop,
6793
- scrollLeft
6899
+ fixed: ''
6794
6900
  });
6795
6901
  },
6796
6902
  debounceScrollYCalculate: _xeUtils.default.debounce(function () {
@@ -6826,11 +6932,9 @@ const Methods = {
6826
6932
  $xeTable.lastScrollTime = Date.now();
6827
6933
  $xeTable.handleSyncScrollY(scrollTop);
6828
6934
  $xeTable.triggerScrollYEvent(evnt);
6829
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
6935
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
6830
6936
  type: 'table',
6831
- fixed: '',
6832
- scrollTop,
6833
- scrollLeft
6937
+ fixed: ''
6834
6938
  });
6835
6939
  },
6836
6940
  /**
@@ -7077,22 +7181,41 @@ const Methods = {
7077
7181
  * @param {Number} scrollTop 上距离
7078
7182
  */
7079
7183
  scrollTo(scrollLeft, scrollTop) {
7184
+ const $xeTable = this;
7080
7185
  const {
7081
7186
  $refs
7082
7187
  } = this;
7083
7188
  const {
7084
7189
  tableBody,
7190
+ tableHeader,
7191
+ leftBody,
7085
7192
  rightBody,
7086
7193
  tableFooter
7087
7194
  } = $refs;
7088
7195
  const tableBodyElem = tableBody ? tableBody.$el : null;
7196
+ const leftBodyElem = leftBody ? leftBody.$el : null;
7089
7197
  const rightBodyElem = rightBody ? rightBody.$el : null;
7198
+ const tableHeaderElem = tableHeader ? tableHeader.$el : null;
7090
7199
  const tableFooterElem = tableFooter ? tableFooter.$el : null;
7091
7200
  if (_xeUtils.default.isNumber(scrollLeft)) {
7092
- (0, _dom.setScrollLeft)(tableFooterElem || tableBodyElem, scrollLeft);
7201
+ const xHandleEl = $xeTable.$refs.refScrollXHandleElem;
7202
+ if (xHandleEl) {
7203
+ (0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
7204
+ } else {
7205
+ (0, _dom.setScrollLeft)(tableBodyElem, scrollLeft);
7206
+ (0, _dom.setScrollLeft)(tableHeaderElem, scrollLeft);
7207
+ (0, _dom.setScrollLeft)(tableFooterElem, scrollLeft);
7208
+ }
7093
7209
  }
7094
7210
  if (_xeUtils.default.isNumber(scrollTop)) {
7095
- (0, _dom.setScrollTop)(rightBodyElem || tableBodyElem, scrollTop);
7211
+ const yHandleEl = $xeTable.$refs.refScrollYHandleElem;
7212
+ if (yHandleEl) {
7213
+ (0, _dom.setScrollTop)(yHandleEl, scrollTop);
7214
+ } else {
7215
+ (0, _dom.setScrollTop)(tableBodyElem, scrollTop);
7216
+ (0, _dom.setScrollTop)(leftBodyElem, scrollTop);
7217
+ (0, _dom.setScrollTop)(rightBodyElem, scrollTop);
7218
+ }
7096
7219
  }
7097
7220
  if (this.scrollXLoad || this.scrollYLoad) {
7098
7221
  return new Promise(resolve => setTimeout(() => resolve(this.$nextTick()), 50));