vxe-table 3.11.30 → 3.11.32

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 +8 -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/keyboard/mixin.js +1 -26
  7. package/es/table/src/body.js +15 -3
  8. package/es/table/src/cell.js +23 -19
  9. package/es/table/src/header.js +33 -22
  10. package/es/table/src/methods.js +205 -46
  11. package/es/table/src/table.js +18 -11
  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 +8 -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 +343 -142
  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/keyboard/mixin.js +0 -32
  27. package/lib/table/module/keyboard/mixin.min.js +1 -1
  28. package/lib/table/src/body.js +16 -3
  29. package/lib/table/src/body.min.js +1 -1
  30. package/lib/table/src/cell.js +23 -17
  31. package/lib/table/src/cell.min.js +1 -1
  32. package/lib/table/src/header.js +35 -26
  33. package/lib/table/src/header.min.js +1 -1
  34. package/lib/table/src/methods.js +240 -46
  35. package/lib/table/src/methods.min.js +1 -1
  36. package/lib/table/src/table.js +19 -11
  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 +9 -1
  48. package/packages/table/module/keyboard/mixin.ts +1 -26
  49. package/packages/table/src/body.ts +14 -3
  50. package/packages/table/src/cell.ts +23 -19
  51. package/packages/table/src/header.ts +34 -22
  52. package/packages/table/src/methods.ts +220 -46
  53. package/packages/table/src/table.ts +20 -12
  54. package/styles/components/table.scss +36 -0
  55. /package/es/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
  56. /package/es/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
  57. /package/es/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
  58. /package/lib/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
  59. /package/lib/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
  60. /package/lib/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
@@ -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
@@ -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
@@ -786,16 +786,13 @@ const Methods = {
786
786
  * @param {Array} datas 数据
787
787
  */
788
788
  loadData(datas) {
789
- const { inited, initStatus } = this;
789
+ const { initStatus } = this;
790
790
  return this.loadTableData(datas).then(() => {
791
791
  this.inited = true;
792
792
  this.initStatus = true;
793
793
  if (!initStatus) {
794
794
  this.handleLoadDefaults();
795
795
  }
796
- if (!inited) {
797
- this.handleInitDefaults();
798
- }
799
796
  return this.recalculate();
800
797
  });
801
798
  },
@@ -804,7 +801,6 @@ const Methods = {
804
801
  * @param {Array} datas 数据
805
802
  */
806
803
  reloadData(datas) {
807
- const { inited } = this;
808
804
  return this.clearAll()
809
805
  .then(() => {
810
806
  this.inited = true;
@@ -813,9 +809,6 @@ const Methods = {
813
809
  })
814
810
  .then(() => {
815
811
  this.handleLoadDefaults();
816
- if (!inited) {
817
- this.handleInitDefaults();
818
- }
819
812
  return this.recalculate();
820
813
  });
821
814
  },
@@ -3999,23 +3992,68 @@ const Methods = {
3999
3992
  * @param {Array/Row} rows 行数据
4000
3993
  * @param {Boolean} value 是否选中
4001
3994
  */
4002
- setCheckboxRow(rows, value) {
3995
+ setCheckboxRow(rows, checked) {
3996
+ const $xeTable = this;
4003
3997
  if (rows && !XEUtils.isArray(rows)) {
4004
3998
  rows = [rows];
4005
3999
  }
4006
- return this.handleCheckedCheckboxRow(rows, value, true);
4000
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
4001
+ },
4002
+ setCheckboxRowKey(keys, checked) {
4003
+ const $xeTable = this;
4004
+ const internalData = $xeTable;
4005
+ const { fullAllDataRowIdData } = internalData;
4006
+ if (keys && !XEUtils.isArray(keys)) {
4007
+ keys = [keys];
4008
+ }
4009
+ const rows = [];
4010
+ keys.forEach((rowid) => {
4011
+ const rowRest = fullAllDataRowIdData[rowid];
4012
+ if (rowRest) {
4013
+ rows.push(rowRest.row);
4014
+ }
4015
+ });
4016
+ return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
4007
4017
  },
4008
4018
  isCheckedByCheckboxRow(row) {
4009
- const { selectCheckboxMaps } = this;
4010
- const { checkField } = this.checkboxOpts;
4019
+ const $xeTable = this;
4020
+ const reactData = $xeTable;
4021
+ const { selectCheckboxMaps } = reactData;
4022
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
4023
+ const { checkField } = checkboxOpts;
4011
4024
  if (checkField) {
4012
4025
  return XEUtils.get(row, checkField);
4013
4026
  }
4014
- return !!selectCheckboxMaps[getRowid(this, row)];
4027
+ return !!selectCheckboxMaps[getRowid($xeTable, row)];
4028
+ },
4029
+ isCheckedByCheckboxRowKey(rowid) {
4030
+ const $xeTable = this;
4031
+ const reactData = $xeTable;
4032
+ const internalData = $xeTable;
4033
+ const { selectCheckboxMaps } = reactData;
4034
+ const { fullAllDataRowIdData } = internalData;
4035
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
4036
+ const { checkField } = checkboxOpts;
4037
+ if (checkField) {
4038
+ const rowRest = fullAllDataRowIdData[rowid];
4039
+ if (rowRest) {
4040
+ return XEUtils.get(rowRest.row, checkField);
4041
+ }
4042
+ return false;
4043
+ }
4044
+ return !!selectCheckboxMaps[rowid];
4015
4045
  },
4016
4046
  isIndeterminateByCheckboxRow(row) {
4017
- const { treeIndeterminateMaps } = this;
4018
- return !!treeIndeterminateMaps[getRowid(this, row)] && !this.isCheckedByCheckboxRow(row);
4047
+ const $xeTable = this;
4048
+ const reactData = $xeTable;
4049
+ const { treeIndeterminateMaps } = reactData;
4050
+ return !!treeIndeterminateMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
4051
+ },
4052
+ isIndeterminateByCheckboxRowKey(rowid) {
4053
+ const $xeTable = this;
4054
+ const reactData = $xeTable;
4055
+ const { treeIndeterminateMaps } = reactData;
4056
+ return !!treeIndeterminateMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
4019
4057
  },
4020
4058
  /**
4021
4059
  * 切换选中
@@ -4750,7 +4788,22 @@ const Methods = {
4750
4788
  return this.$nextTick();
4751
4789
  },
4752
4790
  isCheckedByRadioRow(row) {
4753
- return this.selectRadioRow === row;
4791
+ const $xeTable = this;
4792
+ const reactData = $xeTable;
4793
+ const { selectRadioRow } = reactData;
4794
+ if (row && selectRadioRow) {
4795
+ return $xeTable.eqRow(selectRadioRow, row);
4796
+ }
4797
+ return false;
4798
+ },
4799
+ isCheckedByRadioRowKey(key) {
4800
+ const $xeTable = this;
4801
+ const reactData = $xeTable;
4802
+ const { selectRadioRow } = reactData;
4803
+ if (selectRadioRow) {
4804
+ return key === getRowid($xeTable, selectRadioRow);
4805
+ }
4806
+ return false;
4754
4807
  },
4755
4808
  handleCheckedRadioRow(row, isForce) {
4756
4809
  const { radioOpts } = this;
@@ -4766,7 +4819,22 @@ const Methods = {
4766
4819
  * @param {Row} row 行对象
4767
4820
  */
4768
4821
  setRadioRow(row) {
4769
- return this.handleCheckedRadioRow(row, true);
4822
+ const $xeTable = this;
4823
+ return $xeTable.handleCheckedRadioRow(row, true);
4824
+ },
4825
+ /**
4826
+ * 用于单选行,设置某一行为选中状态
4827
+ * @param key 行主键
4828
+ */
4829
+ setRadioRowKey(rowid) {
4830
+ const $xeTable = this;
4831
+ const internalData = $xeTable;
4832
+ const { fullAllDataRowIdData } = internalData;
4833
+ const rowRest = fullAllDataRowIdData[rowid];
4834
+ if (rowRest) {
4835
+ return $xeTable.handleCheckedRadioRow(rowRest.row, true);
4836
+ }
4837
+ return $xeTable.$nextTick();
4770
4838
  },
4771
4839
  /**
4772
4840
  * 用于当前行,手动清空当前高亮的状态
@@ -4902,6 +4970,7 @@ const Methods = {
4902
4970
  * 如果是双击模式,则单击后选中状态
4903
4971
  */
4904
4972
  triggerCellClickEvent(evnt, params) {
4973
+ const $xeTable = this;
4905
4974
  const { highlightCurrentRow, editStore, radioOpts, expandOpts, treeOpts, keyboardOpts, editConfig, editOpts, checkboxOpts, rowOpts } = this;
4906
4975
  const { actived, focused } = editStore;
4907
4976
  const { row, column } = params;
@@ -4967,6 +5036,21 @@ const Methods = {
4967
5036
  }
4968
5037
  }
4969
5038
  }
5039
+ // 如果是双击编辑模式
5040
+ if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
5041
+ if (actived.row && actived.column) {
5042
+ if (editOpts.mode === 'row') {
5043
+ if (!$xeTable.eqRow(actived.row, row)) {
5044
+ $xeTable.handleClearEdit(evnt);
5045
+ }
5046
+ }
5047
+ else if (editOpts.mode === 'cell') {
5048
+ if (!$xeTable.eqRow(actived.row, row) || actived.column.id !== column.id) {
5049
+ $xeTable.handleClearEdit(evnt);
5050
+ }
5051
+ }
5052
+ }
5053
+ }
4970
5054
  this.emitEvent('cell-click', params, evnt);
4971
5055
  },
4972
5056
  /**
@@ -5053,6 +5137,77 @@ const Methods = {
5053
5137
  $xeTable.handleColumnSortEvent(evnt, column);
5054
5138
  }
5055
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
+ },
5056
5211
  /**
5057
5212
  * 行拖拽
5058
5213
  */
@@ -5278,12 +5433,13 @@ const Methods = {
5278
5433
  const $xeTable = this;
5279
5434
  const props = $xeTable;
5280
5435
  const reactData = $xeTable;
5436
+ evnt.stopPropagation();
5281
5437
  const { dragConfig } = props;
5282
5438
  const rowDragOpts = $xeTable.computeRowDragOpts;
5283
- const { dragStartMethod } = rowDragOpts;
5439
+ const { trigger, dragStartMethod } = rowDragOpts;
5284
5440
  const { row } = params;
5285
5441
  const dragEl = evnt.currentTarget;
5286
- 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;
5287
5443
  const trEl = tdEl.parentElement;
5288
5444
  const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
5289
5445
  reactData.isDragRowMove = false;
@@ -5520,11 +5676,12 @@ const Methods = {
5520
5676
  var _a;
5521
5677
  const $xeTable = this;
5522
5678
  const reactData = $xeTable;
5679
+ evnt.stopPropagation();
5523
5680
  const columnDragOpts = $xeTable.computeColumnDragOpts;
5524
- const { dragStartMethod } = columnDragOpts;
5681
+ const { trigger, dragStartMethod } = columnDragOpts;
5525
5682
  const { column } = params;
5526
5683
  const dragEl = evnt.currentTarget;
5527
- 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;
5528
5685
  reactData.isDragColMove = false;
5529
5686
  clearColDropOrigin($xeTable);
5530
5687
  if (dragStartMethod && !dragStartMethod(params)) {
@@ -5551,64 +5708,65 @@ const Methods = {
5551
5708
  reactData.isDragColMove = false;
5552
5709
  },
5553
5710
  setPendingRow(rows, status) {
5554
- const pendingMaps = Object.assign({}, this.pendingRowMaps);
5555
- const pendingList = [...this.pendingRowList];
5711
+ const $xeTable = this;
5712
+ const reactData = $xeTable;
5713
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
5556
5714
  if (rows && !XEUtils.isArray(rows)) {
5557
5715
  rows = [rows];
5558
5716
  }
5559
5717
  if (status) {
5560
5718
  rows.forEach((row) => {
5561
- const rowid = getRowid(this, row);
5719
+ const rowid = getRowid($xeTable, row);
5562
5720
  if (rowid && !pendingMaps[rowid]) {
5563
- pendingList.push(row);
5564
5721
  pendingMaps[rowid] = row;
5565
5722
  }
5566
5723
  });
5567
5724
  }
5568
5725
  else {
5569
5726
  rows.forEach((row) => {
5570
- const rowid = getRowid(this, row);
5727
+ const rowid = getRowid($xeTable, row);
5571
5728
  if (rowid && pendingMaps[rowid]) {
5572
- const pendingIndex = this.findRowIndexOf(pendingList, row);
5573
- if (pendingIndex > -1) {
5574
- pendingList.splice(pendingIndex, 1);
5575
- }
5576
5729
  delete pendingMaps[rowid];
5577
5730
  }
5578
5731
  });
5579
5732
  }
5580
- this.pendingRowMaps = pendingMaps;
5581
- this.pendingRowList = pendingList;
5582
- return this.$nextTick();
5733
+ reactData.pendingRowMaps = pendingMaps;
5734
+ return $xeTable.$nextTick();
5583
5735
  },
5584
5736
  togglePendingRow(rows) {
5585
- const pendingMaps = Object.assign({}, this.pendingRowMaps);
5586
- const pendingList = [...this.pendingRowList];
5737
+ const $xeTable = this;
5738
+ const reactData = $xeTable;
5739
+ const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
5587
5740
  if (rows && !XEUtils.isArray(rows)) {
5588
5741
  rows = [rows];
5589
5742
  }
5590
5743
  rows.forEach((row) => {
5591
- const rowid = getRowid(this, row);
5744
+ const rowid = getRowid($xeTable, row);
5592
5745
  if (rowid) {
5593
5746
  if (pendingMaps[rowid]) {
5594
- const pendingIndex = this.findRowIndexOf(pendingList, row);
5595
- if (pendingIndex > -1) {
5596
- pendingList.splice(pendingIndex, 1);
5597
- }
5598
5747
  delete pendingMaps[rowid];
5599
5748
  }
5600
5749
  else {
5601
- pendingList.push(row);
5602
5750
  pendingMaps[rowid] = row;
5603
5751
  }
5604
5752
  }
5605
5753
  });
5606
- this.pendingRowMaps = pendingMaps;
5607
- this.pendingRowList = pendingList;
5608
- return this.$nextTick();
5754
+ reactData.pendingRowMaps = pendingMaps;
5755
+ return $xeTable.$nextTick();
5609
5756
  },
5610
5757
  getPendingRecords() {
5611
- return this.pendingRowList.slice(0);
5758
+ const $xeTable = this;
5759
+ const reactData = $xeTable;
5760
+ const internalData = $xeTable;
5761
+ const { pendingRowMaps } = reactData;
5762
+ const { fullAllDataRowIdData } = internalData;
5763
+ const insertRecords = [];
5764
+ XEUtils.each(pendingRowMaps, (row, rowid) => {
5765
+ if (fullAllDataRowIdData[rowid]) {
5766
+ insertRecords.push(row);
5767
+ }
5768
+ });
5769
+ return insertRecords;
5612
5770
  },
5613
5771
  hasPendingByRow(row) {
5614
5772
  const { pendingRowMaps } = this;
@@ -5617,7 +5775,6 @@ const Methods = {
5617
5775
  },
5618
5776
  clearPendingRow() {
5619
5777
  this.pendingRowMaps = {};
5620
- this.pendingRowList = [];
5621
5778
  return this.$nextTick();
5622
5779
  },
5623
5780
  sort(sortConfs, sortOrder) {
@@ -6512,6 +6669,8 @@ const Methods = {
6512
6669
  }
6513
6670
  internalData.lastScrollTop = scrollTop;
6514
6671
  }
6672
+ reactData.isDragColMove = false;
6673
+ reactData.isDragRowMove = false;
6515
6674
  reactData.lastScrollTime = Date.now();
6516
6675
  const evntParams = Object.assign({ scrollTop,
6517
6676
  scrollLeft,
@@ -278,8 +278,6 @@ export default {
278
278
  reColumnFlag: 0,
279
279
  // 已标记的对象集
280
280
  pendingRowMaps: {},
281
- // 已标记的行
282
- pendingRowList: [],
283
281
  // 自定义列相关的信息
284
282
  customStore: {
285
283
  btnEl: null,
@@ -750,6 +748,17 @@ export default {
750
748
  y: overflowY && scrollYLoad
751
749
  };
752
750
  },
751
+ computeTableStyle() {
752
+ const $xeTable = this;
753
+ const reactData = $xeTable;
754
+ const { tableData } = reactData;
755
+ const columnOpts = $xeTable.computeColumnOpts;
756
+ const stys = {};
757
+ if (columnOpts.drag) {
758
+ stys['--vxe-ui-table-drag-column-move-delay'] = `${Math.max(0.06, Math.min(0.3, tableData.length / 800))}s`;
759
+ }
760
+ return stys;
761
+ },
753
762
  tabsResizeFlag() {
754
763
  const $xeTable = this;
755
764
  const $xeTabs = $xeTable.$xeTabs;
@@ -757,16 +766,13 @@ export default {
757
766
  } }),
758
767
  watch: {
759
768
  data(value) {
760
- const { inited, initStatus } = this;
769
+ const { initStatus } = this;
761
770
  this.loadTableData(value).then(() => {
762
771
  this.inited = true;
763
772
  this.initStatus = true;
764
773
  if (!initStatus) {
765
774
  this.handleLoadDefaults();
766
775
  }
767
- if (!inited) {
768
- this.handleInitDefaults();
769
- }
770
776
  // const checkboxColumn = this.tableFullColumn.find(column => column.type === 'checkbox')
771
777
  // if (checkboxColumn && this.tableFullData.length > 300 && !this.checkboxOpts.checkField) {
772
778
  // warnLog('vxe.error.checkProp', ['checkbox-config.checkField'])
@@ -1032,7 +1038,7 @@ export default {
1032
1038
  if (this.editRules && !this._validate) {
1033
1039
  errLog('vxe.error.reqModule', ['Validator']);
1034
1040
  }
1035
- if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.triggerCellMousedownEvent) {
1041
+ if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.handleCellMousedownEvent) {
1036
1042
  errLog('vxe.error.reqModule', ['Keyboard']);
1037
1043
  }
1038
1044
  if ((this.printConfig || this.importConfig || this.exportConfig) && !this._exportData) {
@@ -1055,8 +1061,8 @@ export default {
1055
1061
  this.inited = true;
1056
1062
  this.initStatus = true;
1057
1063
  this.handleLoadDefaults();
1058
- this.handleInitDefaults();
1059
1064
  }
1065
+ this.handleInitDefaults();
1060
1066
  this.updateStyle();
1061
1067
  });
1062
1068
  globalEvents.on(this, 'paste', this.handleGlobalPasteEvent);
@@ -1161,6 +1167,8 @@ export default {
1161
1167
  const vSize = computeSize;
1162
1168
  const virtualScrollBars = $xeTable.computeVirtualScrollBars;
1163
1169
  const isArea = mouseConfig && mouseOpts.area;
1170
+ const tableStyle = $xeTable.computeTableStyle;
1171
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
1164
1172
  return h('div', {
1165
1173
  ref: 'refElem',
1166
1174
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
@@ -1176,6 +1184,7 @@ export default {
1176
1184
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
1177
1185
  'checkbox--range': checkboxOpts.range,
1178
1186
  'column--calc': isCalcColumn,
1187
+ 'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
1179
1188
  'is--header': showHeader,
1180
1189
  'is--footer': showFooter,
1181
1190
  'is--group': isGroup,
@@ -1193,9 +1202,7 @@ export default {
1193
1202
  'is--virtual-x': scrollXLoad,
1194
1203
  'is--virtual-y': scrollYLoad
1195
1204
  }],
1196
- style: {
1197
- '--vxe-ui-table-drag-column-move-delay': `${Math.max(0.05, Math.min(0.3, tableData.length / 800))}s`
1198
- },
1205
+ style: tableStyle,
1199
1206
  attrs: {
1200
1207
  spellcheck: false
1201
1208
  },