vxe-table 3.11.23 → 3.11.25

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 (53) hide show
  1. package/es/{iconfont.1733805838288.ttf → iconfont.1733882708391.ttf} +0 -0
  2. package/es/iconfont.1733882708391.woff +0 -0
  3. package/es/iconfont.1733882708391.woff2 +0 -0
  4. package/es/index.css +1 -1
  5. package/es/index.min.css +1 -1
  6. package/es/style.css +1 -1
  7. package/es/style.min.css +1 -1
  8. package/es/table/module/filter/mixin.js +37 -21
  9. package/es/table/src/methods.js +80 -13
  10. package/es/table/src/table.js +3 -0
  11. package/es/table/style.css +15 -2
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +2 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +15 -2
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/{iconfont.1733805838288.ttf → iconfont.1733882708391.ttf} +0 -0
  18. package/lib/iconfont.1733882708391.woff +0 -0
  19. package/lib/iconfont.1733882708391.woff2 +0 -0
  20. package/lib/index.css +1 -1
  21. package/lib/index.min.css +1 -1
  22. package/lib/index.umd.js +155 -50
  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/filter/mixin.js +43 -25
  27. package/lib/table/module/filter/mixin.min.js +1 -1
  28. package/lib/table/src/methods.js +107 -23
  29. package/lib/table/src/methods.min.js +1 -1
  30. package/lib/table/src/table.js +2 -0
  31. package/lib/table/src/table.min.js +1 -1
  32. package/lib/table/style/style.css +15 -2
  33. package/lib/table/style/style.min.css +1 -1
  34. package/lib/ui/index.js +2 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/log.js +1 -1
  37. package/lib/ui/src/log.min.js +1 -1
  38. package/lib/vxe-table/style/style.css +15 -2
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/module/filter/mixin.ts +42 -21
  42. package/packages/table/src/methods.ts +83 -13
  43. package/packages/table/src/table.ts +3 -0
  44. package/packages/ui/index.ts +1 -0
  45. package/styles/components/icon.scss +5 -1
  46. package/styles/components/table.scss +12 -1
  47. package/styles/icon/iconfont.ttf +0 -0
  48. package/styles/icon/iconfont.woff +0 -0
  49. package/styles/icon/iconfont.woff2 +0 -0
  50. package/es/iconfont.1733805838288.woff +0 -0
  51. package/es/iconfont.1733805838288.woff2 +0 -0
  52. package/lib/iconfont.1733805838288.woff +0 -0
  53. package/lib/iconfont.1733805838288.woff2 +0 -0
@@ -416,11 +416,13 @@ const updateColDropTipContent = ($xeTable, tdEl) => {
416
416
  };
417
417
  function showDropTip($xeTable, evnt, trEl, thEl, showLine, dragPos) {
418
418
  const reactData = $xeTable;
419
+ const internalData = $xeTable;
419
420
  const el = $xeTable.$refs.refElem;
420
421
  if (!el) {
421
422
  return;
422
423
  }
423
424
  const { scrollbarWidth, scrollbarHeight } = reactData;
425
+ const { prevDragToChild } = internalData;
424
426
  const wrapperRect = el.getBoundingClientRect();
425
427
  if (trEl) {
426
428
  const rdLineEl = $xeTable.$refs.refDragRowLineElem;
@@ -432,6 +434,7 @@ function showDropTip($xeTable, evnt, trEl, thEl, showLine, dragPos) {
432
434
  rdLineEl.style.height = `${trRect.height}px`;
433
435
  rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`;
434
436
  rdLineEl.setAttribute('drag-pos', dragPos);
437
+ rdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
435
438
  }
436
439
  else {
437
440
  rdLineEl.style.display = '';
@@ -459,7 +462,7 @@ function showDropTip($xeTable, evnt, trEl, thEl, showLine, dragPos) {
459
462
  rdTipEl.style.display = 'block';
460
463
  rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
461
464
  rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
462
- rdTipEl.setAttribute('drag-status', showLine ? 'normal' : 'disabled');
465
+ rdTipEl.setAttribute('drag-status', showLine ? (prevDragToChild ? 'sub' : 'normal') : 'disabled');
463
466
  }
464
467
  }
465
468
  const hideDropTip = ($xeTable) => {
@@ -939,6 +942,9 @@ const Methods = {
939
942
  cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, items, parent, level, height: 0 };
940
943
  }
941
944
  if (isSource) {
945
+ cacheItem.row = row;
946
+ cacheItem.items = items;
947
+ cacheItem.parent = parent;
942
948
  cacheItem.level = level;
943
949
  cacheItem.index = treeConfig && parent ? -1 : index;
944
950
  fullDataRowIdMaps[rowid] = cacheItem;
@@ -5037,24 +5043,35 @@ const Methods = {
5037
5043
  }
5038
5044
  }
5039
5045
  },
5046
+ handleColumnSortEvent(evnt, column) {
5047
+ const $xeTable = this;
5048
+ const props = $xeTable;
5049
+ const { mouseConfig } = props;
5050
+ const mouseOpts = $xeTable.computeMouseOpts;
5051
+ const { field, sortable } = column;
5052
+ if (sortable) {
5053
+ const params = { $table: $xeTable, $event: evnt, column, field, property: field, order: column.order, sortList: $xeTable.getSortColumns(), sortTime: column.sortTime };
5054
+ if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
5055
+ $xeTable.handleSortEvent(evnt, params);
5056
+ }
5057
+ $xeTable.dispatchEvent('sort-change', params, evnt);
5058
+ }
5059
+ },
5040
5060
  /**
5041
5061
  * 点击排序事件
5042
5062
  */
5043
5063
  triggerSortEvent(evnt, column, order) {
5044
- const { sortOpts } = this;
5064
+ const $xeTable = this;
5065
+ const sortOpts = $xeTable.computeSortOpts;
5045
5066
  const { field, sortable, remoteSort } = column;
5046
5067
  if (sortable || remoteSort) {
5047
5068
  if (!order || column.order === order) {
5048
- this.clearSort(sortOpts.multiple ? column : null);
5069
+ $xeTable.clearSort(sortOpts.multiple ? column : null);
5049
5070
  }
5050
5071
  else {
5051
- this.sort({ field, order });
5052
- }
5053
- const params = { $table: this, $event: evnt, column, field, property: field, order: column.order, sortList: this.getSortColumns(), sortTime: column.sortTime };
5054
- if (this.mouseConfig && this.mouseOpts.area && this.handleSortEvent) {
5055
- this.handleSortEvent(evnt, params);
5072
+ $xeTable.sort({ field, order });
5056
5073
  }
5057
- this.emitEvent('sort-change', params, evnt);
5074
+ $xeTable.handleColumnSortEvent(evnt, column);
5058
5075
  }
5059
5076
  },
5060
5077
  /**
@@ -5073,10 +5090,10 @@ const Methods = {
5073
5090
  const internalData = $xeTable;
5074
5091
  const { treeConfig, dragConfig } = props;
5075
5092
  const rowDragOpts = $xeTable.computeRowDragOpts;
5076
- const { fullAllDataRowIdData } = internalData;
5093
+ const { fullAllDataRowIdData, prevDragToChild } = internalData;
5077
5094
  const { isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts;
5078
5095
  const treeOpts = $xeTable.computeTreeOpts;
5079
- const { transform, mapChildrenField, parentField } = treeOpts;
5096
+ const { transform, rowField, mapChildrenField, parentField } = treeOpts;
5080
5097
  const childrenField = treeOpts.children || treeOpts.childrenField;
5081
5098
  const { dragRow } = reactData;
5082
5099
  const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
@@ -5173,7 +5190,7 @@ const Methods = {
5173
5190
  childRow[parentField] = dragRow[parentField];
5174
5191
  });
5175
5192
  }
5176
- dragRow[parentField] = prevDragRow[parentField];
5193
+ dragRow[parentField] = prevDragToChild ? prevDragRow[rowField] : prevDragRow[parentField];
5177
5194
  internalData.tableFullTreeData = XEUtils.toArrayTree(fullList, {
5178
5195
  key: treeOpts.rowField,
5179
5196
  parentKey: treeOpts.parentField,
@@ -5242,12 +5259,15 @@ const Methods = {
5242
5259
  const { treeConfig } = props;
5243
5260
  const { fullAllDataRowIdData } = internalData;
5244
5261
  const { dragRow } = reactData;
5262
+ const treeOpts = $xeTable.computeTreeOpts;
5263
+ const { transform } = treeOpts;
5245
5264
  const rowDragOpts = $xeTable.computeRowDragOpts;
5246
- const { isCrossDrag } = rowDragOpts;
5265
+ const { isCrossDrag, isToChildDrag } = rowDragOpts;
5247
5266
  if (!dragRow) {
5248
5267
  evnt.preventDefault();
5249
5268
  return;
5250
5269
  }
5270
+ const hasCtrlKey = evnt.ctrlKey;
5251
5271
  const trEl = evnt.currentTarget;
5252
5272
  const rowid = trEl.getAttribute('rowid') || '';
5253
5273
  const rest = fullAllDataRowIdData[rowid];
@@ -5261,6 +5281,7 @@ const Methods = {
5261
5281
  showDropTip($xeTable, evnt, trEl, null, false, dragPos);
5262
5282
  return;
5263
5283
  }
5284
+ internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && hasCtrlKey);
5264
5285
  internalData.prevDragRow = row;
5265
5286
  internalData.prevDragPos = dragPos;
5266
5287
  showDropTip($xeTable, evnt, trEl, null, true, dragPos);
@@ -5421,6 +5442,7 @@ const Methods = {
5421
5442
  showDropTip($xeTable, evnt, null, thEl, false, dragPos);
5422
5443
  return;
5423
5444
  }
5445
+ internalData.prevDragToChild = false;
5424
5446
  internalData.prevDragCol = column;
5425
5447
  internalData.prevDragPos = dragPos;
5426
5448
  showDropTip($xeTable, evnt, null, thEl, true, dragPos);
@@ -5584,6 +5606,51 @@ const Methods = {
5584
5606
  }
5585
5607
  return this.$nextTick();
5586
5608
  },
5609
+ setSort(sortConfs, isUpdate) {
5610
+ const $xeTable = this;
5611
+ const sortOpts = $xeTable.computeSortOpts;
5612
+ const { multiple, remote, orders } = sortOpts;
5613
+ if (!XEUtils.isArray(sortConfs)) {
5614
+ sortConfs = [sortConfs];
5615
+ }
5616
+ if (sortConfs && sortConfs.length) {
5617
+ if (!multiple) {
5618
+ sortConfs = [sortConfs[0]];
5619
+ clearAllSort($xeTable);
5620
+ }
5621
+ let firstColumn = null;
5622
+ sortConfs.forEach((confs, index) => {
5623
+ let { field, order } = confs;
5624
+ let column = field;
5625
+ if (XEUtils.isString(field)) {
5626
+ column = $xeTable.getColumnByField(field);
5627
+ }
5628
+ if (!firstColumn) {
5629
+ firstColumn = column;
5630
+ }
5631
+ if (column && column.sortable) {
5632
+ if (orders.indexOf(order) === -1) {
5633
+ order = getNextSortOrder($xeTable, column);
5634
+ }
5635
+ if (column.order !== order) {
5636
+ column.order = order;
5637
+ }
5638
+ column.sortTime = Date.now() + index;
5639
+ }
5640
+ });
5641
+ if (isUpdate) {
5642
+ if (!remote) {
5643
+ $xeTable.handleTableData(true);
5644
+ }
5645
+ $xeTable.handleColumnSortEvent(new Event('click'), firstColumn);
5646
+ }
5647
+ return $xeTable.$nextTick().then(() => {
5648
+ $xeTable.updateCellAreas();
5649
+ return $xeTable.updateStyle();
5650
+ });
5651
+ }
5652
+ return $xeTable.$nextTick();
5653
+ },
5587
5654
  /**
5588
5655
  * 清空指定列的排序条件
5589
5656
  * 如果为空则清空所有列的排序条件
@@ -147,6 +147,9 @@ const renderDragTip = (h, $xeTable) => {
147
147
  h('span', {
148
148
  class: ['vxe-table--drag-sort-tip-normal-status', dragRow ? getIcon().TABLE_DRAG_STATUS_ROW : getIcon().TABLE_DRAG_STATUS_COLUMN]
149
149
  }),
150
+ h('span', {
151
+ class: ['vxe-table--drag-sort-tip-sub-status', getIcon().TABLE_DRAG_STATUS_SUB_ROW]
152
+ }),
150
153
  h('span', {
151
154
  class: ['vxe-table--drag-sort-tip-disabled-status', getIcon().TABLE_DRAG_DISABLED]
152
155
  })
@@ -543,7 +543,7 @@
543
543
 
544
544
  @font-face {
545
545
  font-family: "vxetableiconfont";
546
- src: url("data:application/x-font-woff2;charset=utf-8;base64,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") format("woff2");
546
+ src: url("data:application/x-font-woff2;charset=utf-8;base64,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") format("woff2");
547
547
  }
548
548
  @keyframes rollCircle {
549
549
  0% {
@@ -599,6 +599,10 @@
599
599
  color: var(--vxe-ui-status-error-color);
600
600
  }
601
601
 
602
+ .vxe-table-icon-add-sub:before {
603
+ content: "\e6bc";
604
+ }
605
+
602
606
  .vxe-table-icon-swap:before {
603
607
  content: "\e7f3";
604
608
  }
@@ -2723,6 +2727,11 @@
2723
2727
  .vxe-table--render-default .vxe-table--drag-row-line[drag-pos=bottom] {
2724
2728
  border-bottom-color: var(--vxe-ui-font-primary-color);
2725
2729
  }
2730
+ .vxe-table--render-default .vxe-table--drag-row-line[drag-to-child=y] {
2731
+ border-top-color: transparent;
2732
+ border-bottom-color: transparent;
2733
+ border-left-color: var(--vxe-ui-status-success-color);
2734
+ }
2726
2735
  .vxe-table--render-default .vxe-table--drag-row-line.is--guides {
2727
2736
  background-color: var(--vxe-ui-table-drag-over-background-color);
2728
2737
  }
@@ -2755,6 +2764,9 @@
2755
2764
  .vxe-table--render-default .vxe-table--drag-sort-tip[drag-status=normal] .vxe-table--drag-sort-tip-normal-status {
2756
2765
  display: block;
2757
2766
  }
2767
+ .vxe-table--render-default .vxe-table--drag-sort-tip[drag-status=sub] .vxe-table--drag-sort-tip-sub-status {
2768
+ display: block;
2769
+ }
2758
2770
  .vxe-table--render-default .vxe-table--drag-sort-tip[drag-status=disabled] .vxe-table--drag-sort-tip-disabled-status {
2759
2771
  display: block;
2760
2772
  }
@@ -2771,7 +2783,8 @@
2771
2783
  flex-shrink: 0;
2772
2784
  color: var(--vxe-ui-status-error-color);
2773
2785
  }
2774
- .vxe-table--render-default .vxe-table--drag-sort-tip-normal-status {
2786
+ .vxe-table--render-default .vxe-table--drag-sort-tip-normal-status,
2787
+ .vxe-table--render-default .vxe-table--drag-sort-tip-sub-status {
2775
2788
  display: none;
2776
2789
  }
2777
2790
  .vxe-table--render-default .vxe-table--drag-sort-tip-content {