vxe-table 3.11.31 → 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 (56) 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/keyboard/mixin.js +1 -26
  6. package/es/table/src/body.js +13 -1
  7. package/es/table/src/cell.js +23 -19
  8. package/es/table/src/header.js +33 -22
  9. package/es/table/src/methods.js +77 -4
  10. package/es/table/src/table.js +3 -1
  11. package/es/table/style.css +36 -0
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +1 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +36 -0
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/index.css +1 -1
  18. package/lib/index.min.css +1 -1
  19. package/lib/index.umd.js +172 -81
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/style.css +1 -1
  22. package/lib/style.min.css +1 -1
  23. package/lib/table/module/keyboard/mixin.js +0 -32
  24. package/lib/table/module/keyboard/mixin.min.js +1 -1
  25. package/lib/table/src/body.js +15 -1
  26. package/lib/table/src/body.min.js +1 -1
  27. package/lib/table/src/cell.js +23 -17
  28. package/lib/table/src/cell.min.js +1 -1
  29. package/lib/table/src/header.js +35 -26
  30. package/lib/table/src/header.min.js +1 -1
  31. package/lib/table/src/methods.js +94 -2
  32. package/lib/table/src/methods.min.js +1 -1
  33. package/lib/table/src/table.js +3 -1
  34. package/lib/table/src/table.min.js +1 -1
  35. package/lib/table/style/style.css +36 -0
  36. package/lib/table/style/style.min.css +1 -1
  37. package/lib/ui/index.js +1 -1
  38. package/lib/ui/index.min.js +1 -1
  39. package/lib/ui/src/log.js +1 -1
  40. package/lib/ui/src/log.min.js +1 -1
  41. package/lib/vxe-table/style/style.css +36 -0
  42. package/lib/vxe-table/style/style.min.css +1 -1
  43. package/package.json +2 -2
  44. package/packages/table/module/keyboard/mixin.ts +1 -26
  45. package/packages/table/src/body.ts +13 -1
  46. package/packages/table/src/cell.ts +23 -19
  47. package/packages/table/src/header.ts +34 -22
  48. package/packages/table/src/methods.ts +79 -4
  49. package/packages/table/src/table.ts +3 -1
  50. package/styles/components/table.scss +36 -0
  51. /package/es/{iconfont.1734190867802.ttf → iconfont.1734331305049.ttf} +0 -0
  52. /package/es/{iconfont.1734190867802.woff → iconfont.1734331305049.woff} +0 -0
  53. /package/es/{iconfont.1734190867802.woff2 → iconfont.1734331305049.woff2} +0 -0
  54. /package/lib/{iconfont.1734190867802.ttf → iconfont.1734331305049.ttf} +0 -0
  55. /package/lib/{iconfont.1734190867802.woff → iconfont.1734331305049.woff} +0 -0
  56. /package/lib/{iconfont.1734190867802.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
@@ -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;