vxe-table 3.11.31 → 3.11.33

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 (65) 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/custom/panel.js +7 -6
  6. package/es/table/module/keyboard/mixin.js +1 -26
  7. package/es/table/src/body.js +21 -5
  8. package/es/table/src/cell.js +23 -19
  9. package/es/table/src/footer.js +4 -2
  10. package/es/table/src/header.js +40 -28
  11. package/es/table/src/methods.js +77 -4
  12. package/es/table/src/table.js +3 -1
  13. package/es/table/style.css +36 -0
  14. package/es/table/style.min.css +1 -1
  15. package/es/ui/index.js +5 -3
  16. package/es/ui/src/log.js +1 -1
  17. package/es/vxe-table/style.css +36 -0
  18. package/es/vxe-table/style.min.css +1 -1
  19. package/lib/index.css +1 -1
  20. package/lib/index.min.css +1 -1
  21. package/lib/index.umd.js +200 -111
  22. package/lib/index.umd.min.js +1 -1
  23. package/lib/style.css +1 -1
  24. package/lib/style.min.css +1 -1
  25. package/lib/table/module/custom/panel.js +7 -14
  26. package/lib/table/module/custom/panel.min.js +1 -1
  27. package/lib/table/module/keyboard/mixin.js +0 -32
  28. package/lib/table/module/keyboard/mixin.min.js +1 -1
  29. package/lib/table/src/body.js +21 -5
  30. package/lib/table/src/body.min.js +1 -1
  31. package/lib/table/src/cell.js +23 -17
  32. package/lib/table/src/cell.min.js +1 -1
  33. package/lib/table/src/footer.js +4 -2
  34. package/lib/table/src/footer.min.js +1 -1
  35. package/lib/table/src/header.js +42 -34
  36. package/lib/table/src/header.min.js +1 -1
  37. package/lib/table/src/methods.js +94 -2
  38. package/lib/table/src/methods.min.js +1 -1
  39. package/lib/table/src/table.js +3 -1
  40. package/lib/table/src/table.min.js +1 -1
  41. package/lib/table/style/style.css +36 -0
  42. package/lib/table/style/style.min.css +1 -1
  43. package/lib/ui/index.js +5 -3
  44. package/lib/ui/index.min.js +1 -1
  45. package/lib/ui/src/log.js +1 -1
  46. package/lib/ui/src/log.min.js +1 -1
  47. package/lib/vxe-table/style/style.css +36 -0
  48. package/lib/vxe-table/style/style.min.css +1 -1
  49. package/package.json +2 -2
  50. package/packages/table/module/custom/panel.ts +9 -6
  51. package/packages/table/module/keyboard/mixin.ts +1 -26
  52. package/packages/table/src/body.ts +21 -5
  53. package/packages/table/src/cell.ts +23 -19
  54. package/packages/table/src/footer.ts +6 -2
  55. package/packages/table/src/header.ts +43 -28
  56. package/packages/table/src/methods.ts +79 -4
  57. package/packages/table/src/table.ts +3 -1
  58. package/packages/ui/index.ts +4 -2
  59. package/styles/components/table.scss +36 -0
  60. /package/es/{iconfont.1734190867802.ttf → iconfont.1734402738434.ttf} +0 -0
  61. /package/es/{iconfont.1734190867802.woff → iconfont.1734402738434.woff} +0 -0
  62. /package/es/{iconfont.1734190867802.woff2 → iconfont.1734402738434.woff2} +0 -0
  63. /package/lib/{iconfont.1734190867802.ttf → iconfont.1734402738434.ttf} +0 -0
  64. /package/lib/{iconfont.1734190867802.woff → iconfont.1734402738434.woff} +0 -0
  65. /package/lib/{iconfont.1734190867802.woff2 → iconfont.1734402738434.woff2} +0 -0
@@ -50,6 +50,8 @@ function renderLine(h, _vm, $xetable, params) {
50
50
  */
51
51
  function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) {
52
52
  const { $listeners: tableListeners, fullAllDataRowIdData, afterFullData, tableData, height, columnKey, overflowX, sYOpts, scrollXLoad, scrollYLoad, highlightCurrentRow, showOverflow: allColumnOverflow, isAllOverflow, align: allAlign, currentColumn, cellClassName: allCellClassName, cellStyle, mergeList, spanMethod, radioOpts, checkboxOpts, expandOpts, treeOpts, tooltipOpts, mouseConfig, editConfig, editOpts, editRules, validOpts, editStore, tooltipConfig, rowOpts, columnOpts, mouseOpts, areaOpts, validErrorMaps } = $xetable;
53
+ const rowDragOpts = $xetable.computeRowDragOpts;
54
+ const { disabledMethod: dragDisabledMethod } = rowDragOpts;
53
55
  const { selectCellToRow } = areaOpts;
54
56
  const cellOpts = $xetable.computeCellOpts;
55
57
  const { type, cellRender, editRender, align, showOverflow, className, treeNode, slots } = column;
@@ -83,6 +85,14 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
83
85
  const bindMouseleave = tableListeners['cell-mouseleave'];
84
86
  const triggerDblclick = (editRender && editConfig && editOpts.trigger === 'dblclick');
85
87
  const params = { $table: $xetable, $grid: $xetable.$xegrid, isEdit: false, seq, rowid, row, rowIndex, $rowIndex, _rowIndex, column, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, level: rowLevel, visibleData: afterFullData, data: tableData, items };
88
+ let isColDragCell = false;
89
+ let isDisabledDrag = false;
90
+ if (rowOpts.drag) {
91
+ isColDragCell = rowDragOpts.trigger === 'row' || (column.dragSort && rowDragOpts.trigger === 'cell');
92
+ }
93
+ if (isColDragCell) {
94
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
95
+ }
86
96
  // hover 进入事件
87
97
  if (showTitle || showTooltip || showAllTip || bindMouseenter || tooltipConfig) {
88
98
  tdOns.mouseenter = (evnt) => {
@@ -116,7 +126,7 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
116
126
  };
117
127
  }
118
128
  // 按下事件处理
119
- if (checkboxOpts.range || mouseConfig) {
129
+ if (isColDragCell || checkboxOpts.range || mouseConfig) {
120
130
  tdOns.mousedown = (evnt) => {
121
131
  $xetable.triggerCellMousedownEvent(evnt, params);
122
132
  };
@@ -262,6 +272,8 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
262
272
  'col--edit': isEdit,
263
273
  'col--ellipsis': hasEllipsis,
264
274
  'fixed--hidden': fixedHiddenColumn,
275
+ 'is--drag-cell': isColDragCell,
276
+ 'is--drag-disabled': isDisabledDrag,
265
277
  'col--dirty': isDirty,
266
278
  'col--active': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
267
279
  'col--valid-error': !!errorValidItem,
@@ -280,7 +292,9 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
280
292
  }, tdVNs);
281
293
  }
282
294
  function renderRows(h, _vm, $xeTable, fixedType, tableData, tableColumn) {
283
- const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, showOverflow: allColumnOverflow, treeConfig, treeOpts, expandOpts, editOpts, treeExpandedMaps, scrollYLoad, rowExpandedMaps, radioOpts, checkboxOpts, expandColumn, hasFixedColumn, fullAllDataRowIdData, rowOpts, pendingRowMaps, columnOpts, isDragColMove } = $xeTable;
295
+ const columnOpts = $xeTable.computeColumnOpts;
296
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
297
+ const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, showOverflow: allColumnOverflow, treeConfig, treeOpts, expandOpts, editOpts, treeExpandedMaps, scrollYLoad, rowExpandedMaps, radioOpts, checkboxOpts, expandColumn, hasFixedColumn, fullAllDataRowIdData, rowOpts, pendingRowMaps, isDragColMove } = $xeTable;
284
298
  const { transform, seqMode } = treeOpts;
285
299
  const childrenField = treeOpts.children || treeOpts.childrenField;
286
300
  const rows = [];
@@ -364,7 +378,7 @@ function renderRows(h, _vm, $xeTable, fixedType, tableData, tableColumn) {
364
378
  const tdVNs = tableColumn.map((column, $columnIndex) => {
365
379
  return renderColumn(h, _vm, $xeTable, seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData);
366
380
  });
367
- rows.push(columnOpts.drag
381
+ rows.push(columnOpts.drag && columnDragOpts.animation
368
382
  ? h('transition-group', {
369
383
  props: {
370
384
  tag: 'tr',
@@ -484,7 +498,9 @@ export default {
484
498
  render(h) {
485
499
  const $xeTable = this.$parent;
486
500
  const { _e, $parent: $xetable, fixedColumn, fixedType } = this;
487
- let { $scopedSlots, tId, tableData, tableColumn, visibleColumn, expandColumn, showOverflow: allColumnOverflow, keyboardConfig, keyboardOpts, mergeList, spanMethod, scrollXLoad, scrollYLoad, isAllOverflow, emptyOpts, mouseConfig, mouseOpts, sYOpts, rowOpts, isDragRowMove } = $xetable;
501
+ const rowOpts = $xeTable.computeRowOpts;
502
+ const rowDragOpts = $xeTable.computeRowDragOpts;
503
+ let { $scopedSlots, tId, tableData, tableColumn, visibleColumn, expandColumn, showOverflow: allColumnOverflow, keyboardConfig, keyboardOpts, mergeList, spanMethod, scrollXLoad, scrollYLoad, isAllOverflow, emptyOpts, mouseConfig, mouseOpts, sYOpts, isDragRowMove } = $xetable;
488
504
  // 如果是使用优化模式
489
505
  if (fixedType) {
490
506
  // 如果存在展开行使用全量渲染
@@ -572,7 +588,7 @@ export default {
572
588
  /**
573
589
  * 内容
574
590
  */
575
- rowOpts.drag
591
+ rowOpts.drag && rowDragOpts.animation
576
592
  ? h('transition-group', {
577
593
  props: {
578
594
  tag: 'tbody',
@@ -46,22 +46,24 @@ function renderCellDragIcon(h, params) {
46
46
  const tableProps = $table;
47
47
  const { dragConfig } = tableProps;
48
48
  const rowDragOpts = $table.computeRowDragOpts;
49
- const { icon, disabledMethod } = rowDragOpts;
49
+ const { icon, trigger, disabledMethod } = rowDragOpts;
50
50
  const rDisabledMethod = disabledMethod || (dragConfig ? dragConfig.rowDisabledMethod : null);
51
51
  const isDisabled = rDisabledMethod && rDisabledMethod(params);
52
+ const ons = {};
53
+ if (trigger !== 'cell') {
54
+ ons.mousedown = (evnt) => {
55
+ if (!isDisabled) {
56
+ $table.handleCellDragMousedownEvent(evnt, params);
57
+ }
58
+ };
59
+ ons.mouseup = $table.handleCellDragMouseupEvent;
60
+ }
52
61
  return h('span', {
53
62
  key: 'dg',
54
63
  class: ['vxe-cell--drag-handle', {
55
64
  'is--disabled': isDisabled
56
65
  }],
57
- on: {
58
- mousedown(evnt) {
59
- if (!isDisabled) {
60
- $table.handleCellDragMousedownEvent(evnt, params);
61
- }
62
- },
63
- mouseup: $table.handleCellDragMouseupEvent
64
- }
66
+ on: ons
65
67
  }, [
66
68
  h('i', {
67
69
  class: icon || (dragConfig ? dragConfig.rowIcon : '') || getIcon().TABLE_DRAG_ROW
@@ -94,23 +96,25 @@ function renderHeaderCellDragIcon(h, params) {
94
96
  const { $table, column } = params;
95
97
  const columnOpts = $table.computeColumnOpts;
96
98
  const columnDragOpts = $table.computeColumnDragOpts;
97
- const { showIcon, icon, isCrossDrag, visibleMethod, disabledMethod } = columnDragOpts;
98
- const isDisabled = disabledMethod && disabledMethod(params);
99
+ const { showIcon, icon, trigger, isCrossDrag, visibleMethod, disabledMethod } = columnDragOpts;
99
100
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
100
101
  if (!column.fixed && (isCrossDrag || !column.parentId)) {
102
+ const isDisabled = disabledMethod && disabledMethod(params);
103
+ const ons = {};
104
+ if (trigger !== 'cell') {
105
+ ons.mousedown = (evnt) => {
106
+ if (!isDisabled) {
107
+ $table.handleHeaderCellDragMousedownEvent(evnt, params);
108
+ }
109
+ };
110
+ ons.mouseup = $table.handleHeaderCellDragMouseupEvent;
111
+ }
101
112
  return h('span', {
102
113
  key: 'dg',
103
114
  class: ['vxe-cell--drag-handle', {
104
115
  'is--disabled': isDisabled
105
116
  }],
106
- on: {
107
- mousedown(evnt) {
108
- if (!isDisabled) {
109
- $table.handleHeaderCellDragMousedownEvent(evnt, params);
110
- }
111
- },
112
- mouseup: $table.handleHeaderCellDragMouseupEvent
113
- }
117
+ on: ons
114
118
  }, [
115
119
  h('i', {
116
120
  class: icon || getIcon().TABLE_DRAG_COLUMN
@@ -146,13 +146,15 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
146
146
  : []);
147
147
  }
148
148
  function renderHeads(h, _vm, footerTableData) {
149
+ const $xeTable = _vm.$parent;
150
+ const columnOpts = $xeTable.computeColumnOpts;
151
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
149
152
  const { $parent: $xetable, fixedType, tableColumn } = _vm;
150
153
  const { footerRowClassName, footerRowStyle, isDragColMove } = $xetable;
151
- const columnOpts = $xetable.columnOpts;
152
154
  return footerTableData.map((row, $rowIndex) => {
153
155
  const _rowIndex = $rowIndex;
154
156
  const rowParams = { $table: $xetable, row, _rowIndex, $rowIndex, fixed: fixedType, type: renderType };
155
- if (columnOpts.drag) {
157
+ if (columnOpts.drag && columnDragOpts.animation) {
156
158
  return h('transition-group', {
157
159
  props: {
158
160
  tag: 'tr',
@@ -6,8 +6,12 @@ import { convertHeaderColumnToRows, getColReMinWidth } from './util';
6
6
  const { renderer } = VxeUI;
7
7
  const cellType = 'header';
8
8
  const renderRows = (h, _vm, cols, $rowIndex) => {
9
- const { $parent: $xetable, fixedType } = _vm;
10
- const { $listeners: tableListeners, resizable: allResizable, border, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, highlightCurrentColumn, currentColumn, scrollXLoad, overflowX, scrollbarWidth, sortOpts, mouseConfig, columnOpts } = $xetable;
9
+ const $xeTable = _vm.$parent;
10
+ const $xeGrid = $xeTable.xegrid;
11
+ const { fixedType } = _vm;
12
+ const { resizable: allResizable, border, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, currentColumn, scrollXLoad, overflowX, scrollbarWidth, mouseConfig, columnOpts } = $xeTable;
13
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
14
+ const { disabledMethod: dragDisabledMethod } = columnDragOpts;
11
15
  return cols.map((column, $columnIndex) => {
12
16
  const { type, showHeaderOverflow, headerAlign, align, headerClassName, editRender, cellRender } = column;
13
17
  // const { enabled } = tooltipOpts
@@ -22,30 +26,40 @@ const renderRows = (h, _vm, cols, $rowIndex) => {
22
26
  const showTitle = headOverflow === 'title';
23
27
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
24
28
  let hasEllipsis = showTitle || showTooltip || showEllipsis;
25
- const thOns = {};
26
29
  const hasFilter = column.filters && column.filters.some((item) => item.checked);
27
- const columnIndex = $xetable.getColumnIndex(column);
28
- const _columnIndex = $xetable.getVTColumnIndex(column);
29
- const params = { $table: $xetable, $grid: $xetable.xegrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, type: cellType, isHidden: fixedHiddenColumn, hasFilter };
30
+ const columnIndex = $xeTable.getColumnIndex(column);
31
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
32
+ const params = { $table: $xeTable, $grid: $xeGrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, type: cellType, isHidden: fixedHiddenColumn, hasFilter };
33
+ const thAttrs = {
34
+ colid,
35
+ colspan: column.colSpan > 1 ? column.colSpan : null,
36
+ rowspan: column.rowSpan > 1 ? column.rowSpan : null
37
+ };
38
+ const thOns = {
39
+ click: (evnt) => $xeTable.triggerHeaderCellClickEvent(evnt, params),
40
+ dblclick: (evnt) => $xeTable.triggerHeaderCellDblclickEvent(evnt, params)
41
+ };
30
42
  // 虚拟滚动不支持动态高度
31
43
  if (scrollXLoad && !hasEllipsis) {
32
44
  showEllipsis = hasEllipsis = true;
33
45
  }
34
- if (columnOpts.isCurrent || highlightCurrentColumn || tableListeners['header-cell-click'] || sortOpts.trigger === 'cell') {
35
- thOns.click = (evnt) => $xetable.triggerHeaderCellClickEvent(evnt, params);
36
- }
37
- if (tableListeners['header-cell-dblclick']) {
38
- thOns.dblclick = (evnt) => $xetable.triggerHeaderCellDblclickEvent(evnt, params);
46
+ const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
47
+ let isDisabledDrag = false;
48
+ if (isColDragCell) {
49
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
39
50
  }
40
51
  // 按下事件处理
41
- if (mouseConfig) {
42
- thOns.mousedown = (evnt) => $xetable.triggerHeaderCellMousedownEvent(evnt, params);
52
+ if (mouseConfig || isColDragCell) {
53
+ thOns.mousedown = (evnt) => $xeTable.triggerHeaderCellMousedownEvent(evnt, params);
43
54
  }
44
- // 拖拽行事件
55
+ // 拖拽列事件
45
56
  if (columnOpts.drag) {
46
- thOns.dragstart = $xetable.handleHeaderCellDragDragstartEvent;
47
- thOns.dragend = $xetable.handleHeaderCellDragDragendEvent;
48
- thOns.dragover = $xetable.handleHeaderCellDragDragoverEvent;
57
+ thOns.dragstart = $xeTable.handleHeaderCellDragDragstartEvent;
58
+ thOns.dragend = $xeTable.handleHeaderCellDragDragendEvent;
59
+ thOns.dragover = $xeTable.handleHeaderCellDragDragoverEvent;
60
+ if (isColDragCell) {
61
+ thOns.mouseup = $xeTable.handleHeaderCellDragMouseupEvent;
62
+ }
49
63
  }
50
64
  return h('th', {
51
65
  class: ['vxe-header--column', colid, {
@@ -59,13 +73,10 @@ const renderRows = (h, _vm, cols, $rowIndex) => {
59
73
  'is--sortable': column.sortable,
60
74
  'col--filter': !!column.filters,
61
75
  'is--filter-active': hasFilter,
76
+ 'is--drag-disabled': isDisabledDrag,
62
77
  'col--current': currentColumn === column
63
78
  }, getClass(headerClassName, params), getClass(headerCellClassName, params)],
64
- attrs: {
65
- colid,
66
- colspan: column.colSpan > 1 ? column.colSpan : null,
67
- rowspan: column.rowSpan > 1 ? column.rowSpan : null
68
- },
79
+ attrs: thAttrs,
69
80
  style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(params) : headerCellStyle) : null,
70
81
  on: thOns,
71
82
  key: columnKey || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
@@ -101,15 +112,16 @@ const renderRows = (h, _vm, cols, $rowIndex) => {
101
112
  : []);
102
113
  };
103
114
  function renderHeads(h, _vm, headerGroups) {
104
- const { $parent: $xetable } = _vm;
105
- const tableProps = $xetable;
115
+ const $xeTable = _vm.$parent;
116
+ const tableProps = $xeTable;
106
117
  const { fixedType } = _vm;
118
+ const columnOpts = $xeTable.computeColumnOpts;
119
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
107
120
  const { headerRowClassName, headerRowStyle } = tableProps;
108
- const { isDragColMove } = $xetable;
109
- const columnOpts = $xetable.columnOpts;
121
+ const { isDragColMove } = $xeTable;
110
122
  return headerGroups.map((cols, $rowIndex) => {
111
- const params = { $table: $xetable, $rowIndex, fixed: fixedType, type: cellType };
112
- if (columnOpts.drag) {
123
+ const params = { $table: $xeTable, $rowIndex, fixed: fixedType, type: cellType };
124
+ if (columnOpts.drag && columnDragOpts.animation) {
113
125
  return h('transition-group', {
114
126
  props: {
115
127
  tag: 'tr',
@@ -5137,6 +5137,77 @@ const Methods = {
5137
5137
  $xeTable.handleColumnSortEvent(evnt, column);
5138
5138
  }
5139
5139
  },
5140
+ /**
5141
+ * 表头单元格按下事件
5142
+ */
5143
+ triggerHeaderCellMousedownEvent(evnt, params) {
5144
+ const $xeTable = this;
5145
+ const props = $xeTable;
5146
+ const { mouseConfig } = props;
5147
+ const mouseOpts = $xeTable.computeMouseOpts;
5148
+ const columnOpts = $xeTable.computeColumnOpts;
5149
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
5150
+ const { trigger, disabledMethod } = columnDragOpts;
5151
+ const cell = evnt.currentTarget;
5152
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
5153
+ const triggerCheckbox = getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
5154
+ const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
5155
+ const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
5156
+ let triggerDrag = false;
5157
+ if (!(triggerInput || triggerCheckbox || triggerSort || triggerFilter)) {
5158
+ if (columnOpts.drag && trigger === 'cell' && !(disabledMethod && disabledMethod(params))) {
5159
+ triggerDrag = true;
5160
+ $xeTable.handleHeaderCellDragMousedownEvent(evnt, params);
5161
+ }
5162
+ }
5163
+ if (!triggerDrag && mouseConfig && mouseOpts.area && $xeTable.handleHeaderCellAreaEvent) {
5164
+ $xeTable.handleHeaderCellAreaEvent(evnt, Object.assign({ cell, triggerSort, triggerFilter }, params));
5165
+ }
5166
+ $xeTable.focus();
5167
+ if ($xeTable.closeMenu) {
5168
+ $xeTable.closeMenu();
5169
+ }
5170
+ },
5171
+ /**
5172
+ * 单元格按下事件
5173
+ */
5174
+ triggerCellMousedownEvent(evnt, params) {
5175
+ const $xeTable = this;
5176
+ const { column } = params;
5177
+ const { type, treeNode } = column;
5178
+ const isRadioType = type === 'radio';
5179
+ const isCheckboxType = type === 'checkbox';
5180
+ const isExpandType = type === 'expand';
5181
+ const rowOpts = $xeTable.computeRowOpts;
5182
+ const rowDragOpts = $xeTable.computeRowDragOpts;
5183
+ const { trigger, disabledMethod } = rowDragOpts;
5184
+ const cell = evnt.currentTarget;
5185
+ params.cell = cell;
5186
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
5187
+ const triggerRadio = isRadioType && getEventTargetNode(evnt, cell, 'vxe-cell--radio').flag;
5188
+ const triggerCheckbox = isCheckboxType && getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
5189
+ const triggerTreeNode = treeNode && getEventTargetNode(evnt, cell, 'vxe-tree--btn-wrapper').flag;
5190
+ const triggerExpandNode = isExpandType && getEventTargetNode(evnt, cell, 'vxe-table--expanded').flag;
5191
+ let isColDragCell = false;
5192
+ if (rowOpts.drag) {
5193
+ isColDragCell = trigger === 'row' || (column.dragSort && trigger === 'cell');
5194
+ }
5195
+ let triggerDrag = false;
5196
+ if (!(triggerInput || triggerRadio || triggerCheckbox || triggerTreeNode || triggerExpandNode)) {
5197
+ if (isColDragCell && !(disabledMethod && disabledMethod(params))) {
5198
+ triggerDrag = true;
5199
+ $xeTable.handleCellDragMousedownEvent(evnt, params);
5200
+ }
5201
+ }
5202
+ if (!triggerDrag && $xeTable.handleCellMousedownEvent) {
5203
+ $xeTable.handleCellMousedownEvent(evnt, params);
5204
+ }
5205
+ $xeTable.focus();
5206
+ $xeTable.closeFilter();
5207
+ if ($xeTable.closeMenu) {
5208
+ $xeTable.closeMenu();
5209
+ }
5210
+ },
5140
5211
  /**
5141
5212
  * 行拖拽
5142
5213
  */
@@ -5362,12 +5433,13 @@ const Methods = {
5362
5433
  const $xeTable = this;
5363
5434
  const props = $xeTable;
5364
5435
  const reactData = $xeTable;
5436
+ evnt.stopPropagation();
5365
5437
  const { dragConfig } = props;
5366
5438
  const rowDragOpts = $xeTable.computeRowDragOpts;
5367
- const { dragStartMethod } = rowDragOpts;
5439
+ const { trigger, dragStartMethod } = rowDragOpts;
5368
5440
  const { row } = params;
5369
5441
  const dragEl = evnt.currentTarget;
5370
- const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5442
+ const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5371
5443
  const trEl = tdEl.parentElement;
5372
5444
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
5373
5445
  reactData.isDragRowMove = false;
@@ -5604,11 +5676,12 @@ const Methods = {
5604
5676
  var _a;
5605
5677
  const $xeTable = this;
5606
5678
  const reactData = $xeTable;
5679
+ evnt.stopPropagation();
5607
5680
  const columnDragOpts = $xeTable.computeColumnDragOpts;
5608
- const { dragStartMethod } = columnDragOpts;
5681
+ const { trigger, dragStartMethod } = columnDragOpts;
5609
5682
  const { column } = params;
5610
5683
  const dragEl = evnt.currentTarget;
5611
- const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5684
+ const thEl = trigger === 'cell' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5612
5685
  reactData.isDragColMove = false;
5613
5686
  clearColDropOrigin($xeTable);
5614
5687
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -1038,7 +1038,7 @@ export default {
1038
1038
  if (this.editRules && !this._validate) {
1039
1039
  errLog('vxe.error.reqModule', ['Validator']);
1040
1040
  }
1041
- if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.triggerCellMousedownEvent) {
1041
+ if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.handleCellMousedownEvent) {
1042
1042
  errLog('vxe.error.reqModule', ['Keyboard']);
1043
1043
  }
1044
1044
  if ((this.printConfig || this.importConfig || this.exportConfig) && !this._exportData) {
@@ -1168,6 +1168,7 @@ export default {
1168
1168
  const virtualScrollBars = $xeTable.computeVirtualScrollBars;
1169
1169
  const isArea = mouseConfig && mouseOpts.area;
1170
1170
  const tableStyle = $xeTable.computeTableStyle;
1171
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
1171
1172
  return h('div', {
1172
1173
  ref: 'refElem',
1173
1174
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
@@ -1183,6 +1184,7 @@ export default {
1183
1184
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
1184
1185
  'checkbox--range': checkboxOpts.range,
1185
1186
  'column--calc': isCalcColumn,
1187
+ 'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
1186
1188
  'is--header': showHeader,
1187
1189
  'is--footer': showFooter,
1188
1190
  'is--group': isGroup,
@@ -2231,6 +2231,24 @@
2231
2231
  .vxe-table--render-default.drag--extend-range .vxe-table--fixed-right-wrapper * {
2232
2232
  cursor: crosshair;
2233
2233
  }
2234
+ .vxe-table--render-default.col--drag-cell .vxe-header--column {
2235
+ -webkit-user-select: none;
2236
+ -moz-user-select: none;
2237
+ user-select: none;
2238
+ }
2239
+ .vxe-table--render-default.col--drag-cell .vxe-header--column:not(.is--drag-disabled) {
2240
+ cursor: grab;
2241
+ }
2242
+ .vxe-table--render-default.col--drag-cell .vxe-header--column:not(.is--drag-disabled):active {
2243
+ cursor: grabbing;
2244
+ }
2245
+ .vxe-table--render-default.col--drag-cell .vxe-header--column:not(.is--drag-disabled):hover {
2246
+ color: var(--vxe-ui-font-primary-color);
2247
+ }
2248
+ .vxe-table--render-default.col--drag-cell .vxe-header--column.is--drag-disabled {
2249
+ color: var(--vxe-ui-input-disabled-color);
2250
+ cursor: not-allowed;
2251
+ }
2234
2252
  .vxe-table--render-default.column--highlight .vxe-header--column:not(.col--seq):hover {
2235
2253
  background-color: var(--vxe-ui-table-column-hover-background-color);
2236
2254
  }
@@ -2811,6 +2829,24 @@
2811
2829
  .vxe-table--render-default .vxe-body--row.row--drag-origin > .vxe-body--column > .vxe-cell {
2812
2830
  opacity: 0.5;
2813
2831
  }
2832
+ .vxe-table--render-default .vxe-body--column.is--drag-cell {
2833
+ -webkit-user-select: none;
2834
+ -moz-user-select: none;
2835
+ user-select: none;
2836
+ }
2837
+ .vxe-table--render-default .vxe-body--column.is--drag-cell:not(.is--drag-disabled) {
2838
+ cursor: grab;
2839
+ }
2840
+ .vxe-table--render-default .vxe-body--column.is--drag-cell:not(.is--drag-disabled):active {
2841
+ cursor: grabbing;
2842
+ }
2843
+ .vxe-table--render-default .vxe-body--column.is--drag-cell:not(.is--drag-disabled):hover {
2844
+ color: var(--vxe-ui-font-primary-color);
2845
+ }
2846
+ .vxe-table--render-default .vxe-body--column.is--drag-cell.is--drag-disabled {
2847
+ color: var(--vxe-ui-input-disabled-color);
2848
+ cursor: not-allowed;
2849
+ }
2814
2850
  .vxe-table--render-default .vxe-body--row-list-move {
2815
2851
  transition-property: transform;
2816
2852
  transition-duration: 0.35s;