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.
- package/es/grid/src/grid.js +7 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/hook.js +10 -3
- package/es/table/module/keyboard/hook.js +2 -31
- package/es/table/src/body.js +16 -4
- package/es/table/src/cell.js +21 -21
- package/es/table/src/header.js +21 -5
- package/es/table/src/table.js +106 -39
- package/es/table/style.css +36 -0
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +36 -0
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +7 -1
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +207 -110
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/hook.js +10 -4
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/keyboard/hook.js +1 -36
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/src/body.js +18 -4
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +27 -19
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/header.js +23 -7
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/table.js +122 -39
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +36 -0
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +36 -0
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +8 -1
- package/packages/table/module/edit/hook.ts +10 -3
- package/packages/table/module/keyboard/hook.ts +2 -31
- package/packages/table/src/body.ts +16 -4
- package/packages/table/src/cell.ts +23 -15
- package/packages/table/src/header.ts +20 -6
- package/packages/table/src/table.ts +107 -42
- package/styles/components/table.scss +36 -0
- /package/es/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
- /package/es/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
- /package/es/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
- /package/lib/{iconfont.1734150615727.ttf → iconfont.1734331313492.ttf} +0 -0
- /package/lib/{iconfont.1734150615727.woff → iconfont.1734331313492.woff} +0 -0
- /package/lib/{iconfont.1734150615727.woff2 → iconfont.1734331313492.woff2} +0 -0
package/es/table/src/body.js
CHANGED
|
@@ -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,
|
|
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':
|
|
448
|
+
'row--pending': !!pendingRowMaps[rowid]
|
|
437
449
|
},
|
|
438
450
|
getPropClass(rowClassName, params)
|
|
439
451
|
];
|
package/es/table/src/cell.js
CHANGED
|
@@ -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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
|
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
|
})
|
package/es/table/src/header.js
CHANGED
|
@@ -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
|
-
],
|
|
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,
|
package/es/table/src/table.js
CHANGED
|
@@ -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 {
|
|
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 {
|
|
4482
|
-
|
|
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 {
|
|
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.
|
|
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();
|
package/es/table/style.css
CHANGED
|
@@ -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;
|