vxe-table 3.15.12 → 3.15.14

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 (49) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/menu/panel.js +12 -4
  6. package/es/table/src/cell.js +2 -2
  7. package/es/table/src/methods.js +64 -22
  8. package/es/table/src/table.js +5 -0
  9. package/es/table/style.css +24 -0
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +4 -4
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +24 -0
  14. package/es/vxe-table/style.min.css +1 -1
  15. package/lib/index.css +1 -1
  16. package/lib/index.min.css +1 -1
  17. package/lib/index.umd.js +86 -33
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/style.min.css +1 -1
  21. package/lib/table/module/menu/panel.js +12 -4
  22. package/lib/table/module/menu/panel.min.js +1 -1
  23. package/lib/table/src/cell.js +2 -2
  24. package/lib/table/src/cell.min.js +1 -1
  25. package/lib/table/src/methods.js +62 -22
  26. package/lib/table/src/methods.min.js +1 -1
  27. package/lib/table/src/table.js +5 -0
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/style/style.css +24 -0
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +4 -4
  32. package/lib/ui/index.min.js +1 -1
  33. package/lib/ui/src/log.js +1 -1
  34. package/lib/ui/src/log.min.js +1 -1
  35. package/lib/vxe-table/style/style.css +24 -0
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +2 -2
  38. package/packages/table/module/menu/panel.ts +12 -4
  39. package/packages/table/src/cell.ts +2 -2
  40. package/packages/table/src/methods.ts +67 -23
  41. package/packages/table/src/table.ts +6 -0
  42. package/packages/ui/index.ts +3 -3
  43. package/styles/components/table.scss +35 -0
  44. /package/es/{iconfont.1745723938260.ttf → iconfont.1745827933282.ttf} +0 -0
  45. /package/es/{iconfont.1745723938260.woff → iconfont.1745827933282.woff} +0 -0
  46. /package/es/{iconfont.1745723938260.woff2 → iconfont.1745827933282.woff2} +0 -0
  47. /package/lib/{iconfont.1745723938260.ttf → iconfont.1745827933282.ttf} +0 -0
  48. /package/lib/{iconfont.1745723938260.woff → iconfont.1745827933282.woff} +0 -0
  49. /package/lib/{iconfont.1745723938260.woff2 → iconfont.1745827933282.woff2} +0 -0
@@ -10,7 +10,7 @@ function renderTitlePrefixIcon(h, params) {
10
10
  const titlePrefix = column.titlePrefix || column.titleHelp;
11
11
  if (titlePrefix) {
12
12
  return h('i', {
13
- class: ['vxe-cell-title-prefix-icon', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
13
+ class: ['vxe-cell-title-prefix-icon', titlePrefix.iconStatus ? `theme--${titlePrefix.iconStatus}` : '', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
14
14
  on: {
15
15
  mouseenter(evnt) {
16
16
  $table.triggerHeaderTitleEvent(evnt, titlePrefix, params);
@@ -28,7 +28,7 @@ function renderTitleSuffixIcon(h, params) {
28
28
  const titleSuffix = column.titleSuffix;
29
29
  if (titleSuffix) {
30
30
  return h('i', {
31
- class: ['vxe-cell-title-suffix-icon', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
31
+ class: ['vxe-cell-title-suffix-icon', titleSuffix.iconStatus ? `theme--${titleSuffix.iconStatus}` : '', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
32
32
  on: {
33
33
  mouseenter(evnt) {
34
34
  $table.triggerHeaderTitleEvent(evnt, titleSuffix, params);
@@ -2418,12 +2418,12 @@ function calcScrollbar($xeTable) {
2418
2418
  if (bodyWrapperElem) {
2419
2419
  overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
2420
2420
  if (yHandleEl) {
2421
- reactData.scrollbarWidth = Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth);
2421
+ reactData.scrollbarWidth = scrollbarOpts.width || (yHandleEl.offsetWidth - yHandleEl.clientWidth) || 14;
2422
2422
  }
2423
2423
  reactData.overflowY = overflowY;
2424
2424
  overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
2425
2425
  if (xHandleEl) {
2426
- reactData.scrollbarHeight = Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight);
2426
+ reactData.scrollbarHeight = scrollbarOpts.height || (xHandleEl.offsetHeight - xHandleEl.clientHeight) || 14;
2427
2427
  }
2428
2428
  reactData.overflowX = overflowX;
2429
2429
  const headerHeight = headerTableElem ? headerTableElem.clientHeight : 0;
@@ -2621,6 +2621,7 @@ function loadTableData($xeTable, datas, isReset) {
2621
2621
  scrollYStore.endIndex = 1;
2622
2622
  scrollXStore.startIndex = 0;
2623
2623
  scrollXStore.endIndex = 1;
2624
+ internalData.cvCacheMaps = {};
2624
2625
  reactData.isRowLoading = true;
2625
2626
  reactData.scrollVMLoading = false;
2626
2627
  internalData.treeExpandedMaps = {};
@@ -3052,7 +3053,7 @@ function lazyScrollXData($xeTable) {
3052
3053
  const internalData = $xeTable;
3053
3054
  const { lxTimeout, lxRunTime, scrollXStore } = internalData;
3054
3055
  const { visibleSize } = scrollXStore;
3055
- const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)));
3056
+ const fpsTime = visibleSize > 26 ? 26 : (visibleSize > 16 ? 14 : 6);
3056
3057
  if (lxTimeout) {
3057
3058
  clearTimeout(lxTimeout);
3058
3059
  }
@@ -3070,7 +3071,7 @@ function lazyScrollYData($xeTable) {
3070
3071
  const internalData = $xeTable;
3071
3072
  const { lyTimeout, lyRunTime, scrollYStore } = internalData;
3072
3073
  const { visibleSize } = scrollYStore;
3073
- const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)));
3074
+ const fpsTime = visibleSize > 30 ? 32 : (visibleSize > 20 ? 18 : 8);
3074
3075
  if (lyTimeout) {
3075
3076
  clearTimeout(lyTimeout);
3076
3077
  }
@@ -9264,8 +9265,8 @@ const Methods = {
9264
9265
  if (isRollX) {
9265
9266
  evnt.preventDefault();
9266
9267
  internalData.inWheelScroll = true;
9267
- wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
9268
- const currLeftNum = offsetLeft;
9268
+ if (browseObj['-moz'] || browseObj.safari) {
9269
+ const currLeftNum = scrollLeft;
9269
9270
  setScrollLeft(xHandleEl, currLeftNum);
9270
9271
  setScrollLeft(bodyScrollElem, currLeftNum);
9271
9272
  setScrollLeft(headerScrollElem, currLeftNum);
@@ -9277,13 +9278,28 @@ const Methods = {
9277
9278
  type: 'table',
9278
9279
  fixed: ''
9279
9280
  });
9280
- });
9281
+ }
9282
+ else {
9283
+ wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
9284
+ const currLeftNum = offsetLeft;
9285
+ setScrollLeft(xHandleEl, currLeftNum);
9286
+ setScrollLeft(bodyScrollElem, currLeftNum);
9287
+ setScrollLeft(headerScrollElem, currLeftNum);
9288
+ setScrollLeft(footerScrollElem, currLeftNum);
9289
+ if (scrollXLoad) {
9290
+ $xeTable.triggerScrollXEvent(evnt);
9291
+ }
9292
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
9293
+ type: 'table',
9294
+ fixed: ''
9295
+ });
9296
+ });
9297
+ }
9281
9298
  }
9282
9299
  if (isRollY) {
9283
9300
  evnt.preventDefault();
9284
- wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
9285
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
9286
- internalData.inWheelScroll = true;
9301
+ if (browseObj['-moz'] || browseObj.safari) {
9302
+ const currTopNum = scrollTop;
9287
9303
  setScrollTop(yHandleEl, currTopNum);
9288
9304
  setScrollTop(bodyScrollElem, currTopNum);
9289
9305
  setScrollTop(leftScrollElem, currTopNum);
@@ -9296,7 +9312,25 @@ const Methods = {
9296
9312
  type: 'table',
9297
9313
  fixed: ''
9298
9314
  });
9299
- });
9315
+ }
9316
+ else {
9317
+ wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
9318
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop;
9319
+ internalData.inWheelScroll = true;
9320
+ setScrollTop(yHandleEl, currTopNum);
9321
+ setScrollTop(bodyScrollElem, currTopNum);
9322
+ setScrollTop(leftScrollElem, currTopNum);
9323
+ setScrollTop(rightScrollElem, currTopNum);
9324
+ setScrollTop(rowExpandEl, currTopNum);
9325
+ if (scrollYLoad) {
9326
+ $xeTable.triggerScrollYEvent(evnt);
9327
+ }
9328
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
9329
+ type: 'table',
9330
+ fixed: ''
9331
+ });
9332
+ });
9333
+ }
9300
9334
  }
9301
9335
  },
9302
9336
  triggerVirtualScrollXEvent(evnt) {
@@ -9428,20 +9462,18 @@ const Methods = {
9428
9462
  ySpaceWidth = maxXWidth;
9429
9463
  isScrollXBig = true;
9430
9464
  }
9431
- let marginLeft = '';
9432
- if (scrollXLoad && overflowX) {
9433
- marginLeft = `${xSpaceLeft}px`;
9465
+ if (!(scrollXLoad && overflowX)) {
9466
+ xSpaceLeft = 0;
9434
9467
  }
9435
9468
  if (headerTableElem) {
9436
- headerTableElem.style.marginLeft = headerTableElem.getAttribute('xvm') ? marginLeft : '';
9469
+ headerTableElem.style.transform = headerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : '';
9437
9470
  }
9438
9471
  if (bodyTableElem) {
9439
- bodyTableElem.style.marginLeft = marginLeft;
9472
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`;
9440
9473
  }
9441
9474
  if (footerTableElem) {
9442
- footerTableElem.style.marginLeft = footerTableElem.getAttribute('xvm') ? marginLeft : '';
9475
+ footerTableElem.style.transform = footerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : '';
9443
9476
  }
9444
- reactData.isScrollXBig = isScrollXBig;
9445
9477
  const containerList = ['main'];
9446
9478
  containerList.forEach(name => {
9447
9479
  const layoutList = ['header', 'body', 'footer'];
@@ -9452,6 +9484,9 @@ const Methods = {
9452
9484
  }
9453
9485
  });
9454
9486
  });
9487
+ reactData.scrollXLeft = xSpaceLeft;
9488
+ reactData.scrollXWidth = ySpaceWidth;
9489
+ reactData.isScrollXBig = isScrollXBig;
9455
9490
  const scrollXSpaceEl = $xeTable.$refs.refScrollXSpaceElem;
9456
9491
  if (scrollXSpaceEl) {
9457
9492
  scrollXSpaceEl.style.width = `${ySpaceWidth}px`;
@@ -9489,6 +9524,8 @@ const Methods = {
9489
9524
  const defaultRowHeight = $xeTable.computeDefaultRowHeight;
9490
9525
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
9491
9526
  const bodyTableElem = getRefElem(elemStore['main-body-table']);
9527
+ const leftBodyTableElem = getRefElem(elemStore['left-body-table']);
9528
+ const rightbodyTableElem = getRefElem(elemStore['right-body-table']);
9492
9529
  const containerList = ['main', 'left', 'right'];
9493
9530
  let ySpaceTop = 0;
9494
9531
  let scrollYHeight = 0;
@@ -9542,12 +9579,17 @@ const Methods = {
9542
9579
  }
9543
9580
  ySpaceHeight = maxYHeight;
9544
9581
  }
9582
+ if (leftBodyTableElem) {
9583
+ leftBodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`;
9584
+ }
9585
+ if (bodyTableElem) {
9586
+ bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
9587
+ }
9588
+ if (rightbodyTableElem) {
9589
+ rightbodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`;
9590
+ }
9545
9591
  containerList.forEach(name => {
9546
9592
  const layoutList = ['header', 'body', 'footer'];
9547
- const tableElem = getRefElem(elemStore[`${name}-body-table`]);
9548
- if (tableElem) {
9549
- tableElem.style.marginTop = scrollYTop ? `${scrollYTop}px` : '';
9550
- }
9551
9593
  layoutList.forEach(layout => {
9552
9594
  const ySpaceElem = getRefElem(elemStore[`${name}-${layout}-ySpace`]);
9553
9595
  if (ySpaceElem) {
@@ -1414,6 +1414,7 @@ export default {
1414
1414
  insertRowMaps: {},
1415
1415
  // 已删除行
1416
1416
  removeRowMaps: {},
1417
+ cvCacheMaps: {},
1417
1418
  swYSize: 0,
1418
1419
  swYInterval: 0,
1419
1420
  swYTotal: 0
@@ -1709,10 +1710,14 @@ export default {
1709
1710
  },
1710
1711
  beforeDestroy() {
1711
1712
  const $xeTable = this;
1713
+ const internalData = $xeTable;
1712
1714
  const tableViewportEl = $xeTable.$refs.refTableViewportElem;
1713
1715
  if (tableViewportEl) {
1714
1716
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent);
1715
1717
  }
1718
+ internalData.cvCacheMaps = {};
1719
+ internalData.prevDragRow = null;
1720
+ internalData.prevDragCol = null;
1716
1721
  if (this.$resize) {
1717
1722
  this.$resize.disconnect();
1718
1723
  }
@@ -2327,6 +2327,30 @@
2327
2327
  .vxe-header--column .vxe-cell-title-suffix-icon {
2328
2328
  cursor: help;
2329
2329
  }
2330
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--primary,
2331
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--primary {
2332
+ color: var(--vxe-ui-font-primary-color);
2333
+ }
2334
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--success,
2335
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--success {
2336
+ color: var(--vxe-ui-status-success-color);
2337
+ }
2338
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--info,
2339
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--info {
2340
+ color: var(--vxe-ui-status-info-color);
2341
+ }
2342
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--warning,
2343
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--warning {
2344
+ color: var(--vxe-ui-status-warning-color);
2345
+ }
2346
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--danger,
2347
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--danger {
2348
+ color: var(--vxe-ui-status-danger-color);
2349
+ }
2350
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--error,
2351
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--error {
2352
+ color: var(--vxe-ui-status-error-color);
2353
+ }
2330
2354
 
2331
2355
  .vxe-cell--col-resizable {
2332
2356
  position: absolute;