vxe-table 3.11.24 → 3.11.26

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.1733816028970.ttf → iconfont.1733885890565.ttf} +0 -0
  2. package/es/iconfont.1733885890565.woff +0 -0
  3. package/es/iconfont.1733885890565.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 +77 -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.1733816028970.ttf → iconfont.1733885890565.ttf} +0 -0
  18. package/lib/iconfont.1733885890565.woff +0 -0
  19. package/lib/iconfont.1733885890565.woff2 +0 -0
  20. package/lib/index.css +1 -1
  21. package/lib/index.min.css +1 -1
  22. package/lib/index.umd.js +152 -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 +104 -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 +80 -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.1733816028970.woff +0 -0
  51. package/es/iconfont.1733816028970.woff2 +0 -0
  52. package/lib/iconfont.1733816028970.woff +0 -0
  53. package/lib/iconfont.1733816028970.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) => {
@@ -5040,24 +5043,35 @@ const Methods = {
5040
5043
  }
5041
5044
  }
5042
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
+ },
5043
5060
  /**
5044
5061
  * 点击排序事件
5045
5062
  */
5046
5063
  triggerSortEvent(evnt, column, order) {
5047
- const { sortOpts } = this;
5064
+ const $xeTable = this;
5065
+ const sortOpts = $xeTable.computeSortOpts;
5048
5066
  const { field, sortable, remoteSort } = column;
5049
5067
  if (sortable || remoteSort) {
5050
5068
  if (!order || column.order === order) {
5051
- this.clearSort(sortOpts.multiple ? column : null);
5069
+ $xeTable.clearSort(sortOpts.multiple ? column : null);
5052
5070
  }
5053
5071
  else {
5054
- this.sort({ field, order });
5055
- }
5056
- const params = { $table: this, $event: evnt, column, field, property: field, order: column.order, sortList: this.getSortColumns(), sortTime: column.sortTime };
5057
- if (this.mouseConfig && this.mouseOpts.area && this.handleSortEvent) {
5058
- this.handleSortEvent(evnt, params);
5072
+ $xeTable.sort({ field, order });
5059
5073
  }
5060
- this.emitEvent('sort-change', params, evnt);
5074
+ $xeTable.handleColumnSortEvent(evnt, column);
5061
5075
  }
5062
5076
  },
5063
5077
  /**
@@ -5076,10 +5090,10 @@ const Methods = {
5076
5090
  const internalData = $xeTable;
5077
5091
  const { treeConfig, dragConfig } = props;
5078
5092
  const rowDragOpts = $xeTable.computeRowDragOpts;
5079
- const { fullAllDataRowIdData } = internalData;
5093
+ const { fullAllDataRowIdData, prevDragToChild } = internalData;
5080
5094
  const { isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts;
5081
5095
  const treeOpts = $xeTable.computeTreeOpts;
5082
- const { transform, mapChildrenField, parentField } = treeOpts;
5096
+ const { transform, rowField, mapChildrenField, parentField } = treeOpts;
5083
5097
  const childrenField = treeOpts.children || treeOpts.childrenField;
5084
5098
  const { dragRow } = reactData;
5085
5099
  const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
@@ -5176,7 +5190,7 @@ const Methods = {
5176
5190
  childRow[parentField] = dragRow[parentField];
5177
5191
  });
5178
5192
  }
5179
- dragRow[parentField] = prevDragRow[parentField];
5193
+ dragRow[parentField] = prevDragToChild ? prevDragRow[rowField] : prevDragRow[parentField];
5180
5194
  internalData.tableFullTreeData = XEUtils.toArrayTree(fullList, {
5181
5195
  key: treeOpts.rowField,
5182
5196
  parentKey: treeOpts.parentField,
@@ -5245,12 +5259,15 @@ const Methods = {
5245
5259
  const { treeConfig } = props;
5246
5260
  const { fullAllDataRowIdData } = internalData;
5247
5261
  const { dragRow } = reactData;
5262
+ const treeOpts = $xeTable.computeTreeOpts;
5263
+ const { transform } = treeOpts;
5248
5264
  const rowDragOpts = $xeTable.computeRowDragOpts;
5249
- const { isCrossDrag } = rowDragOpts;
5265
+ const { isCrossDrag, isToChildDrag } = rowDragOpts;
5250
5266
  if (!dragRow) {
5251
5267
  evnt.preventDefault();
5252
5268
  return;
5253
5269
  }
5270
+ const hasCtrlKey = evnt.ctrlKey;
5254
5271
  const trEl = evnt.currentTarget;
5255
5272
  const rowid = trEl.getAttribute('rowid') || '';
5256
5273
  const rest = fullAllDataRowIdData[rowid];
@@ -5264,6 +5281,7 @@ const Methods = {
5264
5281
  showDropTip($xeTable, evnt, trEl, null, false, dragPos);
5265
5282
  return;
5266
5283
  }
5284
+ internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && hasCtrlKey);
5267
5285
  internalData.prevDragRow = row;
5268
5286
  internalData.prevDragPos = dragPos;
5269
5287
  showDropTip($xeTable, evnt, trEl, null, true, dragPos);
@@ -5424,6 +5442,7 @@ const Methods = {
5424
5442
  showDropTip($xeTable, evnt, null, thEl, false, dragPos);
5425
5443
  return;
5426
5444
  }
5445
+ internalData.prevDragToChild = false;
5427
5446
  internalData.prevDragCol = column;
5428
5447
  internalData.prevDragPos = dragPos;
5429
5448
  showDropTip($xeTable, evnt, null, thEl, true, dragPos);
@@ -5587,6 +5606,51 @@ const Methods = {
5587
5606
  }
5588
5607
  return this.$nextTick();
5589
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
+ },
5590
5654
  /**
5591
5655
  * 清空指定列的排序条件
5592
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 {