vxe-table 4.9.26 → 4.9.28

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 (60) hide show
  1. package/es/grid/src/grid.js +7 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/edit/hook.js +10 -3
  7. package/es/table/module/keyboard/hook.js +2 -31
  8. package/es/table/src/body.js +16 -4
  9. package/es/table/src/cell.js +21 -21
  10. package/es/table/src/header.js +21 -5
  11. package/es/table/src/table.js +106 -39
  12. package/es/table/style.css +36 -0
  13. package/es/table/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +36 -0
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/grid/src/grid.js +7 -1
  19. package/lib/grid/src/grid.min.js +1 -1
  20. package/lib/index.css +1 -1
  21. package/lib/index.min.css +1 -1
  22. package/lib/index.umd.js +207 -110
  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/edit/hook.js +10 -4
  27. package/lib/table/module/edit/hook.min.js +1 -1
  28. package/lib/table/module/keyboard/hook.js +1 -36
  29. package/lib/table/module/keyboard/hook.min.js +1 -1
  30. package/lib/table/src/body.js +18 -4
  31. package/lib/table/src/body.min.js +1 -1
  32. package/lib/table/src/cell.js +27 -19
  33. package/lib/table/src/cell.min.js +1 -1
  34. package/lib/table/src/header.js +23 -7
  35. package/lib/table/src/header.min.js +1 -1
  36. package/lib/table/src/table.js +122 -39
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/style/style.css +36 -0
  39. package/lib/table/style/style.min.css +1 -1
  40. package/lib/ui/index.js +1 -1
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +36 -0
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/grid/src/grid.ts +8 -1
  48. package/packages/table/module/edit/hook.ts +10 -3
  49. package/packages/table/module/keyboard/hook.ts +2 -31
  50. package/packages/table/src/body.ts +16 -4
  51. package/packages/table/src/cell.ts +23 -15
  52. package/packages/table/src/header.ts +20 -6
  53. package/packages/table/src/table.ts +107 -42
  54. package/styles/components/table.scss +36 -0
  55. /package/es/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
  56. /package/es/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
  57. /package/es/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
  58. /package/lib/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
  59. /package/lib/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
  60. /package/lib/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
@@ -28,7 +28,7 @@ export default defineComponent({
28
28
  const xesize = inject('xesize', null);
29
29
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
30
30
  const { refTableBody, refTableHeader, refTableFooter, refTableLeftBody, refTableRightBody, refScrollXHandleElem, refScrollYHandleElem } = $xeTable.getRefMaps();
31
- const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeKeyboardOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts } = $xeTable.getComputeMaps();
31
+ const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeKeyboardOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts } = $xeTable.getComputeMaps();
32
32
  const refElem = ref();
33
33
  const refBodyTable = ref();
34
34
  const refBodyColgroup = ref();
@@ -125,6 +125,8 @@ export default defineComponent({
125
125
  const editOpts = computeEditOpts.value;
126
126
  const tooltipOpts = computeTooltipOpts.value;
127
127
  const rowOpts = computeRowOpts.value;
128
+ const rowDragOpts = computeRowDragOpts.value;
129
+ const { disabledMethod: dragDisabledMethod } = rowDragOpts;
128
130
  const sYOpts = computeSYOpts.value;
129
131
  const columnOpts = computeColumnOpts.value;
130
132
  const mouseOpts = computeMouseOpts.value;
@@ -180,6 +182,14 @@ export default defineComponent({
180
182
  data: tableData,
181
183
  items
182
184
  };
185
+ let isColDragCell = false;
186
+ let isDisabledDrag = false;
187
+ if (rowOpts.drag) {
188
+ isColDragCell = rowDragOpts.trigger === 'row' || (column.dragSort && rowDragOpts.trigger === 'cell');
189
+ }
190
+ if (isColDragCell) {
191
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
192
+ }
183
193
  // hover 进入事件
184
194
  if (showTitle || showTooltip || showAllTip || tooltipConfig) {
185
195
  tdOns.onMouseenter = (evnt) => {
@@ -209,7 +219,7 @@ export default defineComponent({
209
219
  };
210
220
  }
211
221
  // 按下事件处理
212
- if (checkboxOpts.range || mouseConfig) {
222
+ if (isColDragCell || checkboxOpts.range || mouseConfig) {
213
223
  tdOns.onMousedown = (evnt) => {
214
224
  $xeTable.triggerCellMousedownEvent(evnt, params);
215
225
  };
@@ -342,6 +352,8 @@ export default defineComponent({
342
352
  'col--edit': isEdit,
343
353
  'col--ellipsis': hasEllipsis,
344
354
  'fixed--hidden': fixedHiddenColumn,
355
+ 'is--drag-cell': isColDragCell,
356
+ 'is--drag-disabled': isDisabledDrag,
345
357
  'col--dirty': isDirty,
346
358
  'col--active': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
347
359
  'col--valid-error': !!errorValidItem,
@@ -356,7 +368,7 @@ export default defineComponent({
356
368
  };
357
369
  const renderRows = (fixedType, tableData, tableColumn) => {
358
370
  const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, showOverflow: allColumnOverflow, editConfig, treeConfig } = tableProps;
359
- const { hasFixedColumn, treeExpandedMaps, scrollYLoad, rowExpandedMaps, expandColumn, selectRadioRow, pendingRowMaps, pendingRowList, isDragColMove } = tableReactData;
371
+ const { hasFixedColumn, treeExpandedMaps, scrollYLoad, rowExpandedMaps, expandColumn, selectRadioRow, pendingRowMaps, isDragColMove } = tableReactData;
360
372
  const { fullAllDataRowIdData } = tableInternalData;
361
373
  const checkboxOpts = computeCheckboxOpts.value;
362
374
  const radioOpts = computeRadioOpts.value;
@@ -433,7 +445,7 @@ export default defineComponent({
433
445
  'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
434
446
  'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
435
447
  'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
436
- 'row--pending': pendingRowList.length && !!pendingRowMaps[rowid]
448
+ 'row--pending': !!pendingRowMaps[rowid]
437
449
  },
438
450
  getPropClass(rowClassName, params)
439
451
  ];
@@ -44,21 +44,21 @@ function renderCellDragIcon(params) {
44
44
  const { dragConfig } = tableProps;
45
45
  const { computeRowDragOpts } = $table.getComputeMaps();
46
46
  const rowDragOpts = computeRowDragOpts.value;
47
- const { icon, disabledMethod } = rowDragOpts;
47
+ const { icon, trigger, disabledMethod } = rowDragOpts;
48
48
  const rDisabledMethod = disabledMethod || (dragConfig ? dragConfig.rowDisabledMethod : null);
49
49
  const isDisabled = rDisabledMethod && rDisabledMethod(params);
50
- return h('span', {
51
- key: 'dg',
52
- class: ['vxe-cell--drag-handle', {
53
- 'is--disabled': isDisabled
54
- }],
55
- onMousedown(evnt) {
50
+ const ons = {};
51
+ if (trigger !== 'cell') {
52
+ ons.onMousedown = (evnt) => {
56
53
  if (!isDisabled) {
57
54
  $table.handleCellDragMousedownEvent(evnt, params);
58
55
  }
59
- },
60
- onMouseup: $table.handleCellDragMouseupEvent
61
- }, [
56
+ };
57
+ ons.onMouseup = $table.handleCellDragMouseupEvent;
58
+ }
59
+ return h('span', Object.assign({ key: 'dg', class: ['vxe-cell--drag-handle', {
60
+ 'is--disabled': isDisabled
61
+ }] }, ons), [
62
62
  h('i', {
63
63
  class: icon || (dragConfig ? dragConfig.rowIcon : '') || getIcon().TABLE_DRAG_ROW
64
64
  })
@@ -92,22 +92,22 @@ function renderHeaderCellDragIcon(params) {
92
92
  const { computeColumnOpts, computeColumnDragOpts } = $table.getComputeMaps();
93
93
  const columnOpts = computeColumnOpts.value;
94
94
  const columnDragOpts = computeColumnDragOpts.value;
95
- const { showIcon, icon, isCrossDrag, visibleMethod, disabledMethod } = columnDragOpts;
96
- const isDisabled = disabledMethod && disabledMethod(params);
95
+ const { showIcon, icon, trigger, isCrossDrag, visibleMethod, disabledMethod } = columnDragOpts;
97
96
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
98
97
  if (!column.fixed && (isCrossDrag || !column.parentId)) {
99
- return h('span', {
100
- key: 'dg',
101
- class: ['vxe-cell--drag-handle', {
102
- 'is--disabled': isDisabled
103
- }],
104
- onMousedown(evnt) {
98
+ const isDisabled = disabledMethod && disabledMethod(params);
99
+ const ons = {};
100
+ if (trigger !== 'cell') {
101
+ ons.onMousedown = (evnt) => {
105
102
  if (!isDisabled) {
106
103
  $table.handleHeaderCellDragMousedownEvent(evnt, params);
107
104
  }
108
- },
109
- onMouseup: $table.handleHeaderCellDragMouseupEvent
110
- }, [
105
+ };
106
+ ons.onMouseup = $table.handleHeaderCellDragMouseupEvent;
107
+ }
108
+ return h('span', Object.assign({ key: 'dg', class: ['vxe-cell--drag-handle', {
109
+ 'is--disabled': isDisabled
110
+ }] }, ons), [
111
111
  h('i', {
112
112
  class: icon || getIcon().TABLE_DRAG_COLUMN
113
113
  })
@@ -21,7 +21,7 @@ export default defineComponent({
21
21
  const $xeTable = inject('$xeTable', {});
22
22
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
23
23
  const { refElem: tableRefElem, refTableBody, refLeftContainer, refRightContainer, refCellResizeBar, refCellResizeTip } = $xeTable.getRefMaps();
24
- const { computeColumnOpts, computeResizableOpts } = $xeTable.getComputeMaps();
24
+ const { computeColumnOpts, computeColumnDragOpts, computeResizableOpts } = $xeTable.getComputeMaps();
25
25
  const headerColumn = ref([]);
26
26
  const refElem = ref();
27
27
  const refHeaderTable = ref();
@@ -159,6 +159,8 @@ export default defineComponent({
159
159
  const { resizable: allResizable, border, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
160
160
  const { currentColumn, scrollXLoad, overflowX, scrollbarWidth } = tableReactData;
161
161
  const columnOpts = computeColumnOpts.value;
162
+ const columnDragOpts = computeColumnDragOpts.value;
163
+ const { disabledMethod: dragDisabledMethod } = columnDragOpts;
162
164
  return cols.map((column, $columnIndex) => {
163
165
  const { type, showHeaderOverflow, headerAlign, align, headerClassName, editRender, cellRender } = column;
164
166
  const colid = column.id;
@@ -176,6 +178,11 @@ export default defineComponent({
176
178
  const columnIndex = $xeTable.getColumnIndex(column);
177
179
  const _columnIndex = $xeTable.getVTColumnIndex(column);
178
180
  const params = { $table: $xeTable, $grid: $xeTable.xegrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, hasFilter };
181
+ const thAttrs = {
182
+ colid,
183
+ colspan: column.colSpan > 1 ? column.colSpan : null,
184
+ rowspan: column.rowSpan > 1 ? column.rowSpan : null
185
+ };
179
186
  const thOns = {
180
187
  onClick: (evnt) => $xeTable.triggerHeaderCellClickEvent(evnt, params),
181
188
  onDblclick: (evnt) => $xeTable.triggerHeaderCellDblclickEvent(evnt, params)
@@ -184,17 +191,25 @@ export default defineComponent({
184
191
  if (scrollXLoad && !hasEllipsis) {
185
192
  showEllipsis = hasEllipsis = true;
186
193
  }
194
+ const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
195
+ let isDisabledDrag = false;
196
+ if (isColDragCell) {
197
+ isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(params));
198
+ }
187
199
  // 按下事件处理
188
- if (mouseConfig) {
200
+ if (mouseConfig || isColDragCell) {
189
201
  thOns.onMousedown = (evnt) => $xeTable.triggerHeaderCellMousedownEvent(evnt, params);
190
202
  }
191
- // 拖拽行事件
203
+ // 拖拽列事件
192
204
  if (columnOpts.drag) {
193
205
  thOns.onDragstart = $xeTable.handleHeaderCellDragDragstartEvent;
194
206
  thOns.onDragend = $xeTable.handleHeaderCellDragDragendEvent;
195
207
  thOns.onDragover = $xeTable.handleHeaderCellDragDragoverEvent;
208
+ if (isColDragCell) {
209
+ thOns.onMouseup = $xeTable.handleHeaderCellDragMouseupEvent;
210
+ }
196
211
  }
197
- return h('th', Object.assign(Object.assign({ class: ['vxe-header--column', colid, {
212
+ return h('th', Object.assign(Object.assign(Object.assign({ class: ['vxe-header--column', colid, {
198
213
  [`col--${headAlign}`]: headAlign,
199
214
  [`col--${type}`]: type,
200
215
  'col--last': $columnIndex === cols.length - 1,
@@ -205,11 +220,12 @@ export default defineComponent({
205
220
  'is--sortable': column.sortable,
206
221
  'col--filter': !!column.filters,
207
222
  'is--filter-active': hasFilter,
223
+ 'is--drag-disabled': isDisabledDrag,
208
224
  'col--current': currentColumn === column
209
225
  },
210
226
  headerClassName ? (XEUtils.isFunction(headerClassName) ? headerClassName(params) : headerClassName) : '',
211
227
  headerCellClassName ? (XEUtils.isFunction(headerCellClassName) ? headerCellClassName(params) : headerCellClassName) : ''
212
- ], colid, colspan: column.colSpan > 1 ? column.colSpan : null, rowspan: column.rowSpan > 1 ? column.rowSpan : null, style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(params) : headerCellStyle) : null }, thOns), { key: columnKey || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex }), [
228
+ ], style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(params) : headerCellStyle) : null }, thAttrs), thOns), { key: columnKey || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex }), [
213
229
  h('div', {
214
230
  class: ['vxe-cell', {
215
231
  'c--title': showTitle,
@@ -102,8 +102,6 @@ export default defineComponent({
102
102
  reColumnFlag: 0,
103
103
  // 已标记的对象集
104
104
  pendingRowMaps: {},
105
- // 已标记的行
106
- pendingRowList: [],
107
105
  // 初始化标识
108
106
  initStore: {
109
107
  filter: false,
@@ -3138,16 +3136,13 @@ export default defineComponent({
3138
3136
  * @param {Array} datas 数据
3139
3137
  */
3140
3138
  loadData(datas) {
3141
- const { inited, initStatus } = internalData;
3139
+ const { initStatus } = internalData;
3142
3140
  return loadTableData(datas).then(() => {
3143
3141
  internalData.inited = true;
3144
3142
  internalData.initStatus = true;
3145
3143
  if (!initStatus) {
3146
3144
  handleLoadDefaults();
3147
3145
  }
3148
- if (!inited) {
3149
- handleInitDefaults();
3150
- }
3151
3146
  return tableMethods.recalculate();
3152
3147
  });
3153
3148
  },
@@ -3156,7 +3151,6 @@ export default defineComponent({
3156
3151
  * @param {Array} datas 数据
3157
3152
  */
3158
3153
  reloadData(datas) {
3159
- const { inited } = internalData;
3160
3154
  return tableMethods.clearAll()
3161
3155
  .then(() => {
3162
3156
  internalData.inited = true;
@@ -3165,9 +3159,6 @@ export default defineComponent({
3165
3159
  })
3166
3160
  .then(() => {
3167
3161
  handleLoadDefaults();
3168
- if (!inited) {
3169
- handleInitDefaults();
3170
- }
3171
3162
  return tableMethods.recalculate();
3172
3163
  });
3173
3164
  },
@@ -4414,7 +4405,6 @@ export default defineComponent({
4414
4405
  },
4415
4406
  setPendingRow(rows, status) {
4416
4407
  const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
4417
- const pendingList = [...reactData.pendingRowList];
4418
4408
  if (rows && !XEUtils.isArray(rows)) {
4419
4409
  rows = [rows];
4420
4410
  }
@@ -4422,7 +4412,6 @@ export default defineComponent({
4422
4412
  rows.forEach((row) => {
4423
4413
  const rowid = getRowid($xeTable, row);
4424
4414
  if (rowid && !pendingMaps[rowid]) {
4425
- pendingList.push(row);
4426
4415
  pendingMaps[rowid] = row;
4427
4416
  }
4428
4417
  });
@@ -4431,21 +4420,15 @@ export default defineComponent({
4431
4420
  rows.forEach((row) => {
4432
4421
  const rowid = getRowid($xeTable, row);
4433
4422
  if (rowid && pendingMaps[rowid]) {
4434
- const pendingIndex = $xeTable.findRowIndexOf(pendingList, row);
4435
- if (pendingIndex > -1) {
4436
- pendingList.splice(pendingIndex, 1);
4437
- }
4438
4423
  delete pendingMaps[rowid];
4439
4424
  }
4440
4425
  });
4441
4426
  }
4442
4427
  reactData.pendingRowMaps = pendingMaps;
4443
- reactData.pendingRowList = pendingList;
4444
4428
  return nextTick();
4445
4429
  },
4446
4430
  togglePendingRow(rows) {
4447
4431
  const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
4448
- const pendingList = [...reactData.pendingRowList];
4449
4432
  if (rows && !XEUtils.isArray(rows)) {
4450
4433
  rows = [rows];
4451
4434
  }
@@ -4453,20 +4436,14 @@ export default defineComponent({
4453
4436
  const rowid = getRowid($xeTable, row);
4454
4437
  if (rowid) {
4455
4438
  if (pendingMaps[rowid]) {
4456
- const pendingIndex = $xeTable.findRowIndexOf(pendingList, row);
4457
- if (pendingIndex > -1) {
4458
- pendingList.splice(pendingIndex, 1);
4459
- }
4460
4439
  delete pendingMaps[rowid];
4461
4440
  }
4462
4441
  else {
4463
- pendingList.push(row);
4464
4442
  pendingMaps[rowid] = row;
4465
4443
  }
4466
4444
  }
4467
4445
  });
4468
4446
  reactData.pendingRowMaps = pendingMaps;
4469
- reactData.pendingRowList = pendingList;
4470
4447
  return nextTick();
4471
4448
  },
4472
4449
  hasPendingByRow(row) {
@@ -4478,12 +4455,18 @@ export default defineComponent({
4478
4455
  return !!pendingRowMaps[rowid];
4479
4456
  },
4480
4457
  getPendingRecords() {
4481
- const { pendingRowList } = reactData;
4482
- return pendingRowList.slice(0);
4458
+ const { pendingRowMaps } = reactData;
4459
+ const { fullAllDataRowIdData } = internalData;
4460
+ const insertRecords = [];
4461
+ XEUtils.each(pendingRowMaps, (row, rowid) => {
4462
+ if (fullAllDataRowIdData[rowid]) {
4463
+ insertRecords.push(row);
4464
+ }
4465
+ });
4466
+ return insertRecords;
4483
4467
  },
4484
4468
  clearPendingRow() {
4485
4469
  reactData.pendingRowMaps = {};
4486
- reactData.pendingRowList = [];
4487
4470
  return nextTick();
4488
4471
  },
4489
4472
  sort(sortConfs, sortOrder) {
@@ -6884,6 +6867,21 @@ export default defineComponent({
6884
6867
  }
6885
6868
  }
6886
6869
  }
6870
+ // 如果是双击编辑模式
6871
+ if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
6872
+ if (actived.row && actived.column) {
6873
+ if (editOpts.mode === 'row') {
6874
+ if (!$xeTable.eqRow(actived.row, row)) {
6875
+ $xeTable.handleClearEdit(evnt);
6876
+ }
6877
+ }
6878
+ else if (editOpts.mode === 'cell') {
6879
+ if (!$xeTable.eqRow(actived.row, row) || actived.column.id !== column.id) {
6880
+ $xeTable.handleClearEdit(evnt);
6881
+ }
6882
+ }
6883
+ }
6884
+ }
6887
6885
  dispatchEvent('cell-click', params, evnt);
6888
6886
  },
6889
6887
  /**
@@ -7116,6 +7114,74 @@ export default defineComponent({
7116
7114
  $xeTable.handleColumnSortEvent(evnt, column);
7117
7115
  }
7118
7116
  },
7117
+ /**
7118
+ * 表头单元格按下事件
7119
+ */
7120
+ triggerHeaderCellMousedownEvent(evnt, params) {
7121
+ const { mouseConfig } = props;
7122
+ const mouseOpts = computeMouseOpts.value;
7123
+ const columnOpts = computeColumnOpts.value;
7124
+ const columnDragOpts = computeColumnDragOpts.value;
7125
+ const { trigger, disabledMethod } = columnDragOpts;
7126
+ const cell = evnt.currentTarget;
7127
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
7128
+ const triggerCheckbox = getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
7129
+ const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
7130
+ const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
7131
+ let triggerDrag = false;
7132
+ if (!(triggerInput || triggerCheckbox || triggerSort || triggerFilter)) {
7133
+ if (columnOpts.drag && trigger === 'cell' && !(disabledMethod && disabledMethod(params))) {
7134
+ triggerDrag = true;
7135
+ $xeTable.handleHeaderCellDragMousedownEvent(evnt, params);
7136
+ }
7137
+ }
7138
+ if (!triggerDrag && mouseConfig && mouseOpts.area && $xeTable.handleHeaderCellAreaEvent) {
7139
+ $xeTable.handleHeaderCellAreaEvent(evnt, Object.assign({ cell, triggerSort, triggerFilter }, params));
7140
+ }
7141
+ $xeTable.focus();
7142
+ if ($xeTable.closeMenu) {
7143
+ $xeTable.closeMenu();
7144
+ }
7145
+ },
7146
+ /**
7147
+ * 单元格按下事件
7148
+ */
7149
+ triggerCellMousedownEvent(evnt, params) {
7150
+ const { column } = params;
7151
+ const { type, treeNode } = column;
7152
+ const isRadioType = type === 'radio';
7153
+ const isCheckboxType = type === 'checkbox';
7154
+ const isExpandType = type === 'expand';
7155
+ const rowOpts = computeRowOpts.value;
7156
+ const rowDragOpts = computeRowDragOpts.value;
7157
+ const { trigger, disabledMethod } = rowDragOpts;
7158
+ const cell = evnt.currentTarget;
7159
+ params.cell = cell;
7160
+ const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
7161
+ const triggerRadio = isRadioType && getEventTargetNode(evnt, cell, 'vxe-cell--radio').flag;
7162
+ const triggerCheckbox = isCheckboxType && getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag;
7163
+ const triggerTreeNode = treeNode && getEventTargetNode(evnt, cell, 'vxe-tree--btn-wrapper').flag;
7164
+ const triggerExpandNode = isExpandType && getEventTargetNode(evnt, cell, 'vxe-table--expanded').flag;
7165
+ let isColDragCell = false;
7166
+ if (rowOpts.drag) {
7167
+ isColDragCell = trigger === 'row' || (column.dragSort && trigger === 'cell');
7168
+ }
7169
+ let triggerDrag = false;
7170
+ if (!(triggerInput || triggerRadio || triggerCheckbox || triggerTreeNode || triggerExpandNode)) {
7171
+ if (isColDragCell && !(disabledMethod && disabledMethod(params))) {
7172
+ triggerDrag = true;
7173
+ $xeTable.handleCellDragMousedownEvent(evnt, params);
7174
+ }
7175
+ }
7176
+ if (!triggerDrag && $xeTable.handleCellMousedownEvent) {
7177
+ $xeTable.handleCellMousedownEvent(evnt, params);
7178
+ }
7179
+ $xeTable.focus();
7180
+ $xeTable.closeFilter();
7181
+ if ($xeTable.closeMenu) {
7182
+ $xeTable.closeMenu();
7183
+ }
7184
+ },
7119
7185
  /**
7120
7186
  * 行拖拽
7121
7187
  */
@@ -7330,15 +7396,15 @@ export default defineComponent({
7330
7396
  },
7331
7397
  handleCellDragMousedownEvent(evnt, params) {
7332
7398
  var _a;
7399
+ evnt.stopPropagation();
7333
7400
  const { dragConfig } = props;
7334
7401
  const rowDragOpts = computeRowDragOpts.value;
7335
- const { dragStartMethod } = rowDragOpts;
7402
+ const { trigger, dragStartMethod } = rowDragOpts;
7336
7403
  const { row } = params;
7337
7404
  const dragEl = evnt.currentTarget;
7338
- const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
7405
+ const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
7339
7406
  const trEl = tdEl.parentElement;
7340
7407
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
7341
- reactData.isDragRowMove = false;
7342
7408
  clearRowDropOrigin();
7343
7409
  if (dStartMethod && !dStartMethod(params)) {
7344
7410
  trEl.draggable = false;
@@ -7568,11 +7634,12 @@ export default defineComponent({
7568
7634
  },
7569
7635
  handleHeaderCellDragMousedownEvent(evnt, params) {
7570
7636
  var _a;
7637
+ evnt.stopPropagation();
7571
7638
  const columnDragOpts = computeColumnDragOpts.value;
7572
- const { dragStartMethod } = columnDragOpts;
7639
+ const { trigger, dragStartMethod } = columnDragOpts;
7573
7640
  const { column } = params;
7574
7641
  const dragEl = evnt.currentTarget;
7575
- const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
7642
+ const thEl = trigger === 'cell' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
7576
7643
  reactData.isDragColMove = false;
7577
7644
  clearColDropOrigin();
7578
7645
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -7658,6 +7725,8 @@ export default defineComponent({
7658
7725
  }
7659
7726
  internalData.lastScrollTop = scrollTop;
7660
7727
  }
7728
+ reactData.isDragColMove = false;
7729
+ reactData.isDragRowMove = false;
7661
7730
  reactData.lastScrollTime = Date.now();
7662
7731
  const evntParams = Object.assign({ scrollTop,
7663
7732
  scrollLeft,
@@ -8101,6 +8170,7 @@ export default defineComponent({
8101
8170
  const resizableOpts = computeResizableOpts.value;
8102
8171
  const isArea = mouseConfig && mouseOpts.area;
8103
8172
  const tableStyle = computeTableStyle.value;
8173
+ const columnDragOpts = computeColumnDragOpts.value;
8104
8174
  return h('div', {
8105
8175
  ref: refElem,
8106
8176
  class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
@@ -8117,6 +8187,7 @@ export default defineComponent({
8117
8187
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
8118
8188
  'checkbox--range': checkboxOpts.range,
8119
8189
  'column--calc': isCalcColumn,
8190
+ 'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
8120
8191
  'is--header': showHeader,
8121
8192
  'is--footer': showFooter,
8122
8193
  'is--group': isGroup,
@@ -8379,7 +8450,7 @@ export default defineComponent({
8379
8450
  dataFlag.value++;
8380
8451
  });
8381
8452
  watch(dataFlag, () => {
8382
- const { inited, initStatus } = internalData;
8453
+ const { initStatus } = internalData;
8383
8454
  loadTableData(props.data || []).then(() => {
8384
8455
  const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
8385
8456
  internalData.inited = true;
@@ -8387,9 +8458,6 @@ export default defineComponent({
8387
8458
  if (!initStatus) {
8388
8459
  handleLoadDefaults();
8389
8460
  }
8390
- if (!inited) {
8391
- handleInitDefaults();
8392
- }
8393
8461
  if (process.env.NODE_ENV === 'development') {
8394
8462
  // const checkboxOpts = computeCheckboxOpts.value
8395
8463
  // const checkboxColumn = internalData.tableFullColumn.find(column => column.type === 'checkbox')
@@ -8647,7 +8715,7 @@ export default defineComponent({
8647
8715
  if (props.editRules && !$xeTable.validate) {
8648
8716
  errLog('vxe.error.reqModule', ['Validator']);
8649
8717
  }
8650
- if ((checkboxOpts.range || props.keyboardConfig || props.mouseConfig) && !$xeTable.triggerCellMousedownEvent) {
8718
+ if ((checkboxOpts.range || props.keyboardConfig || props.mouseConfig) && !$xeTable.handleCellMousedownEvent) {
8651
8719
  errLog('vxe.error.reqModule', ['Keyboard']);
8652
8720
  }
8653
8721
  if ((props.printConfig || props.importConfig || props.exportConfig) && !$xeTable.exportData) {
@@ -8670,8 +8738,8 @@ export default defineComponent({
8670
8738
  internalData.inited = true;
8671
8739
  internalData.initStatus = true;
8672
8740
  handleLoadDefaults();
8673
- handleInitDefaults();
8674
8741
  }
8742
+ handleInitDefaults();
8675
8743
  updateStyle();
8676
8744
  });
8677
8745
  if (props.autoResize) {
@@ -8710,7 +8778,6 @@ export default defineComponent({
8710
8778
  globalEvents.on($xeTable, 'contextmenu', $xeTable.handleGlobalContextmenuEvent);
8711
8779
  tablePrivateMethods.preventEvent(null, 'mounted', { $table: $xeTable });
8712
8780
  });
8713
- window.aaaa = $xeTable;
8714
8781
  onBeforeUnmount(() => {
8715
8782
  if (resizeObserver) {
8716
8783
  resizeObserver.disconnect();
@@ -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;