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.
- package/es/grid/src/grid.js +8 -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/keyboard/mixin.js +1 -26
- package/es/table/src/body.js +15 -3
- package/es/table/src/cell.js +23 -19
- package/es/table/src/header.js +33 -22
- package/es/table/src/methods.js +205 -46
- package/es/table/src/table.js +18 -11
- 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 +8 -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 +343 -142
- 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/keyboard/mixin.js +0 -32
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/body.js +16 -3
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +23 -17
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/header.js +35 -26
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +240 -46
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +19 -11
- 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 +9 -1
- package/packages/table/module/keyboard/mixin.ts +1 -26
- package/packages/table/src/body.ts +14 -3
- package/packages/table/src/cell.ts +23 -19
- package/packages/table/src/header.ts +34 -22
- package/packages/table/src/methods.ts +220 -46
- package/packages/table/src/table.ts +20 -12
- package/styles/components/table.scss +36 -0
- /package/es/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
- /package/es/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
- /package/es/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
- /package/lib/{iconfont.1734099731402.ttf → iconfont.1734331305049.ttf} +0 -0
- /package/lib/{iconfont.1734099731402.woff → iconfont.1734331305049.woff} +0 -0
- /package/lib/{iconfont.1734099731402.woff2 → iconfont.1734331305049.woff2} +0 -0
package/es/table/src/cell.js
CHANGED
|
@@ -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
|
package/es/table/src/header.js
CHANGED
|
@@ -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
|
|
10
|
-
const
|
|
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 = $
|
|
28
|
-
const _columnIndex = $
|
|
29
|
-
const params = { $table: $
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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) => $
|
|
52
|
+
if (mouseConfig || isColDragCell) {
|
|
53
|
+
thOns.mousedown = (evnt) => $xeTable.triggerHeaderCellMousedownEvent(evnt, params);
|
|
43
54
|
}
|
|
44
|
-
//
|
|
55
|
+
// 拖拽列事件
|
|
45
56
|
if (columnOpts.drag) {
|
|
46
|
-
thOns.dragstart = $
|
|
47
|
-
thOns.dragend = $
|
|
48
|
-
thOns.dragover = $
|
|
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
|
package/es/table/src/methods.js
CHANGED
|
@@ -786,16 +786,13 @@ const Methods = {
|
|
|
786
786
|
* @param {Array} datas 数据
|
|
787
787
|
*/
|
|
788
788
|
loadData(datas) {
|
|
789
|
-
const {
|
|
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,
|
|
3995
|
+
setCheckboxRow(rows, checked) {
|
|
3996
|
+
const $xeTable = this;
|
|
4003
3997
|
if (rows && !XEUtils.isArray(rows)) {
|
|
4004
3998
|
rows = [rows];
|
|
4005
3999
|
}
|
|
4006
|
-
return
|
|
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
|
|
4010
|
-
const
|
|
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(
|
|
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
|
|
4018
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
5555
|
-
const
|
|
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(
|
|
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(
|
|
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
|
-
|
|
5581
|
-
|
|
5582
|
-
return this.$nextTick();
|
|
5733
|
+
reactData.pendingRowMaps = pendingMaps;
|
|
5734
|
+
return $xeTable.$nextTick();
|
|
5583
5735
|
},
|
|
5584
5736
|
togglePendingRow(rows) {
|
|
5585
|
-
const
|
|
5586
|
-
const
|
|
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(
|
|
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
|
-
|
|
5607
|
-
|
|
5608
|
-
return this.$nextTick();
|
|
5754
|
+
reactData.pendingRowMaps = pendingMaps;
|
|
5755
|
+
return $xeTable.$nextTick();
|
|
5609
5756
|
},
|
|
5610
5757
|
getPendingRecords() {
|
|
5611
|
-
|
|
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,
|
package/es/table/src/table.js
CHANGED
|
@@ -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 {
|
|
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.
|
|
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
|
},
|