vxe-table 4.1.8 → 4.1.9
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/button/src/button.js +14 -14
- package/es/edit/src/hook.js +3 -3
- package/es/export/src/hook.js +4 -4
- package/es/filter/src/hook.js +20 -1
- package/es/table/src/body.js +11 -14
- package/es/table/src/cell.js +16 -14
- package/es/table/src/table.js +90 -80
- package/es/table/src/util.js +3 -0
- package/es/tools/dom.js +2 -8
- package/lib/button/src/button.js +15 -14
- package/lib/button/src/button.min.js +1 -1
- package/lib/edit/src/hook.js +3 -0
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/export/src/hook.js +3 -5
- package/lib/export/src/hook.min.js +1 -1
- package/lib/filter/src/hook.js +23 -0
- package/lib/filter/src/hook.min.js +1 -1
- package/lib/index.umd.js +242 -179
- package/lib/index.umd.min.js +1 -1
- package/lib/table/src/body.js +8 -16
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +16 -16
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/table.js +144 -104
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +7 -0
- package/lib/table/src/util.min.js +1 -1
- package/lib/tools/dom.js +2 -9
- package/lib/tools/dom.min.js +1 -1
- package/package.json +1 -1
- package/packages/button/src/button.ts +14 -14
- package/packages/edit/src/hook.ts +3 -3
- package/packages/export/src/hook.ts +4 -4
- package/packages/filter/src/hook.ts +20 -1
- package/packages/table/src/body.ts +11 -14
- package/packages/table/src/cell.ts +16 -14
- package/packages/table/src/table.ts +90 -80
- package/packages/table/src/util.ts +4 -0
- package/packages/tools/dom.ts +2 -7
- package/types/filter.d.ts +5 -0
- package/types/plugins/pro.d.ts +5 -0
- package/types/table.d.ts +8 -2
package/es/button/src/button.js
CHANGED
|
@@ -127,39 +127,39 @@ export default defineComponent({
|
|
|
127
127
|
var panelStyle = {
|
|
128
128
|
zIndex: panelIndex
|
|
129
129
|
};
|
|
130
|
-
var _a = getAbsolutePos(targetElem),
|
|
130
|
+
var _a = getAbsolutePos(targetElem), top_1 = _a.top, left = _a.left, boundingTop = _a.boundingTop, visibleHeight = _a.visibleHeight, visibleWidth = _a.visibleWidth;
|
|
131
131
|
var panelPlacement = 'bottom';
|
|
132
132
|
if (transfer) {
|
|
133
|
-
var
|
|
134
|
-
var
|
|
133
|
+
var btnLeft = left + targetWidth - panelWidth;
|
|
134
|
+
var btnTop = top_1 + targetHeight;
|
|
135
135
|
if (placement === 'top') {
|
|
136
136
|
panelPlacement = 'top';
|
|
137
|
-
|
|
137
|
+
btnTop = top_1 - panelHeight;
|
|
138
138
|
}
|
|
139
139
|
else if (!placement) {
|
|
140
140
|
// 如果下面不够放,则向上
|
|
141
|
-
if (
|
|
141
|
+
if (boundingTop + targetHeight + panelHeight + marginSize > visibleHeight) {
|
|
142
142
|
panelPlacement = 'top';
|
|
143
|
-
|
|
143
|
+
btnTop = top_1 - panelHeight;
|
|
144
144
|
}
|
|
145
145
|
// 如果上面不够放,则向下(优先)
|
|
146
|
-
if (
|
|
146
|
+
if (btnTop < marginSize) {
|
|
147
147
|
panelPlacement = 'bottom';
|
|
148
|
-
|
|
148
|
+
btnTop = top_1 + targetHeight;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
// 如果溢出右边
|
|
152
|
-
if (
|
|
153
|
-
|
|
152
|
+
if (btnLeft + panelWidth + marginSize > visibleWidth) {
|
|
153
|
+
btnLeft -= btnLeft + panelWidth + marginSize - visibleWidth;
|
|
154
154
|
}
|
|
155
155
|
// 如果溢出左边
|
|
156
|
-
if (
|
|
157
|
-
|
|
156
|
+
if (btnLeft < marginSize) {
|
|
157
|
+
btnLeft = marginSize;
|
|
158
158
|
}
|
|
159
159
|
Object.assign(panelStyle, {
|
|
160
|
-
left:
|
|
160
|
+
left: btnLeft + "px",
|
|
161
161
|
right: 'auto',
|
|
162
|
-
top:
|
|
162
|
+
top: btnTop + "px",
|
|
163
163
|
minWidth: targetWidth + "px"
|
|
164
164
|
});
|
|
165
165
|
}
|
package/es/edit/src/hook.js
CHANGED
|
@@ -83,7 +83,7 @@ var editHook = {
|
|
|
83
83
|
parentChilds = parentRow[treeOpts.children] = [];
|
|
84
84
|
}
|
|
85
85
|
parentChilds[funcName](item);
|
|
86
|
-
var rest = { row: item, rowid: rowid, index: -1, _index: -1, $index: -1, items: parentChilds, parent: parent, level: parentLevel + 1 };
|
|
86
|
+
var rest = { row: item, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: parentChilds, parent: parent, level: parentLevel + 1 };
|
|
87
87
|
fullDataRowIdData[rowid] = rest;
|
|
88
88
|
fullAllDataRowIdData[rowid] = rest;
|
|
89
89
|
}
|
|
@@ -95,7 +95,7 @@ var editHook = {
|
|
|
95
95
|
}
|
|
96
96
|
afterFullData[funcName](item);
|
|
97
97
|
treeFullData[funcName](item);
|
|
98
|
-
var rest = { row: item, rowid: rowid, index: -1, _index: -1, $index: -1, items: treeFullData, parent: null, level: 0 };
|
|
98
|
+
var rest = { row: item, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: treeFullData, parent: null, level: 0 };
|
|
99
99
|
fullDataRowIdData[rowid] = rest;
|
|
100
100
|
fullAllDataRowIdData[rowid] = rest;
|
|
101
101
|
}
|
|
@@ -188,7 +188,7 @@ var editHook = {
|
|
|
188
188
|
item[treeOpts.parentField] = parentRow_1[treeOpts.rowField];
|
|
189
189
|
}
|
|
190
190
|
parentChilds_1.splice(matchObj_1.index + i, 0, item);
|
|
191
|
-
var rest = { row: item, rowid: rowid, index: -1, _index: -1, $index: -1, items: parentChilds_1, parent: parentRow_1, level: parentLevel_1 + 1 };
|
|
191
|
+
var rest = { row: item, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: parentChilds_1, parent: parentRow_1, level: parentLevel_1 + 1 };
|
|
192
192
|
fullDataRowIdData[rowid] = rest;
|
|
193
193
|
fullAllDataRowIdData[rowid] = rest;
|
|
194
194
|
});
|
package/es/export/src/hook.js
CHANGED
|
@@ -2,7 +2,7 @@ import { inject, nextTick } from 'vue';
|
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import GlobalConfig from '../../v-x-e-table/src/conf';
|
|
4
4
|
import { VXETable } from '../../v-x-e-table';
|
|
5
|
-
import { isColumnInfo, mergeBodyMethod, getCellValue } from '../../table/src/util';
|
|
5
|
+
import { isColumnInfo, mergeBodyMethod, getCellValue, toTreePathSeq } from '../../table/src/util';
|
|
6
6
|
import { errLog, warnLog, parseFile, formatText } from '../../tools/utils';
|
|
7
7
|
import { readLocalFile, handlePrint, saveLocalFile, createHtmlPage, getExportBlobByContent } from './util';
|
|
8
8
|
var htmlCellElem;
|
|
@@ -265,14 +265,14 @@ var tableExportHook = {
|
|
|
265
265
|
var treeOpts = computeTreeOpts.value;
|
|
266
266
|
return row[treeOpts.children] && row[treeOpts.children].length;
|
|
267
267
|
};
|
|
268
|
-
var getSeq = function (row, rowIndex, column, columnIndex,
|
|
268
|
+
var getSeq = function (row, rowIndex, column, columnIndex, path) {
|
|
269
269
|
var seqOpts = computeSeqOpts.value;
|
|
270
270
|
var seqMethod = seqOpts.seqMethod || column.seqMethod;
|
|
271
271
|
if (seqMethod) {
|
|
272
272
|
return seqMethod({ row: row, rowIndex: rowIndex, column: column, columnIndex: columnIndex });
|
|
273
273
|
}
|
|
274
|
-
if (
|
|
275
|
-
return
|
|
274
|
+
if (path) {
|
|
275
|
+
return toTreePathSeq(path);
|
|
276
276
|
}
|
|
277
277
|
return seqOpts.startIndex + rowIndex + 1;
|
|
278
278
|
};
|
package/es/filter/src/hook.js
CHANGED
|
@@ -13,7 +13,7 @@ import { nextTick } from 'vue';
|
|
|
13
13
|
import XEUtils from 'xe-utils';
|
|
14
14
|
import { VXETable } from '../../v-x-e-table';
|
|
15
15
|
import { toFilters, handleFieldOrColumn } from '../../table/src/util';
|
|
16
|
-
import { getDomNode } from '../../tools/dom';
|
|
16
|
+
import { getDomNode, triggerEvent } from '../../tools/dom';
|
|
17
17
|
var tableFilterMethodKeys = ['setFilter', 'clearFilter', 'getCheckedFilters'];
|
|
18
18
|
var tableFilterHook = {
|
|
19
19
|
setupTable: function ($xetable) {
|
|
@@ -181,6 +181,25 @@ var tableFilterHook = {
|
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
183
|
var filterMethods = {
|
|
184
|
+
/**
|
|
185
|
+
* 手动弹出筛选面板
|
|
186
|
+
* @param column
|
|
187
|
+
*/
|
|
188
|
+
openFilter: function (fieldOrColumn) {
|
|
189
|
+
var column = handleFieldOrColumn($xetable, fieldOrColumn);
|
|
190
|
+
if (column && column.filters) {
|
|
191
|
+
var elemStore_1 = internalData.elemStore;
|
|
192
|
+
var fixed_1 = column.fixed;
|
|
193
|
+
return $xetable.scrollToColumn(column).then(function () {
|
|
194
|
+
var headerWrapperElem = elemStore_1[(fixed_1 || 'main') + "-header-wrapper"] || elemStore_1['main-header-wrapper'];
|
|
195
|
+
if (headerWrapperElem) {
|
|
196
|
+
var filterBtnElem = headerWrapperElem.querySelector(".vxe-header--column." + column.id + " .vxe-filter--btn");
|
|
197
|
+
triggerEvent(filterBtnElem, 'click');
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
return nextTick();
|
|
202
|
+
},
|
|
184
203
|
/**
|
|
185
204
|
* 修改筛选条件列表
|
|
186
205
|
* @param {ColumnInfo} fieldOrColumn 列或字段名
|
package/es/table/src/body.js
CHANGED
|
@@ -110,7 +110,7 @@ export default defineComponent({
|
|
|
110
110
|
/**
|
|
111
111
|
* 渲染列
|
|
112
112
|
*/
|
|
113
|
-
var renderColumn = function (
|
|
113
|
+
var renderColumn = function (seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) {
|
|
114
114
|
var _a;
|
|
115
115
|
var columnKey = tableProps.columnKey, height = tableProps.height, allColumnOverflow = tableProps.showOverflow, cellClassName = tableProps.cellClassName, cellStyle = tableProps.cellStyle, allAlign = tableProps.align, spanMethod = tableProps.spanMethod, mouseConfig = tableProps.mouseConfig, editConfig = tableProps.editConfig, editRules = tableProps.editRules, tooltipConfig = tableProps.tooltipConfig;
|
|
116
116
|
var tableData = tableReactData.tableData, overflowX = tableReactData.overflowX, scrollYLoad = tableReactData.scrollYLoad, currentColumn = tableReactData.currentColumn, mergeList = tableReactData.mergeList, editStore = tableReactData.editStore, validStore = tableReactData.validStore, isAllOverflow = tableReactData.isAllOverflow;
|
|
@@ -141,7 +141,7 @@ export default defineComponent({
|
|
|
141
141
|
var hasValidError = validStore.row === row && validStore.column === column;
|
|
142
142
|
var showValidTip = editRules && validOpts.showMessage && (validOpts.message === 'default' ? (height || tableData.length > 1) : validOpts.message === 'inline');
|
|
143
143
|
var attrs = { colid: column.id };
|
|
144
|
-
var params = { $table: $xetable,
|
|
144
|
+
var params = { $table: $xetable, seq: seq, rowid: rowid, row: row, rowIndex: rowIndex, $rowIndex: $rowIndex, _rowIndex: _rowIndex, column: column, columnIndex: columnIndex, $columnIndex: $columnIndex, _columnIndex: _columnIndex, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, level: rowLevel, visibleData: afterFullData, data: tableData, items: items };
|
|
145
145
|
// 虚拟滚动不支持动态高度
|
|
146
146
|
if (scrollYLoad && !hasEllipsis) {
|
|
147
147
|
showEllipsis = hasEllipsis = true;
|
|
@@ -282,10 +282,10 @@ export default defineComponent({
|
|
|
282
282
|
height: hasEllipsis && (scrollYRHeight || rowHeight) ? (scrollYRHeight || rowHeight) + "px" : ''
|
|
283
283
|
}, cellStyle ? (XEUtils.isFunction(cellStyle) ? cellStyle(params) : cellStyle) : null) }), tdOns), tdVNs);
|
|
284
284
|
};
|
|
285
|
-
var renderRows = function (
|
|
285
|
+
var renderRows = function (fixedType, tableData, tableColumn) {
|
|
286
286
|
var stripe = tableProps.stripe, rowKey = tableProps.rowKey, highlightHoverRow = tableProps.highlightHoverRow, rowClassName = tableProps.rowClassName, rowStyle = tableProps.rowStyle, allColumnOverflow = tableProps.showOverflow, editConfig = tableProps.editConfig, treeConfig = tableProps.treeConfig;
|
|
287
287
|
var hasFixedColumn = tableReactData.hasFixedColumn, treeExpandeds = tableReactData.treeExpandeds, scrollYLoad = tableReactData.scrollYLoad, editStore = tableReactData.editStore, rowExpandeds = tableReactData.rowExpandeds, expandColumn = tableReactData.expandColumn, selectRow = tableReactData.selectRow;
|
|
288
|
-
var
|
|
288
|
+
var fullDataRowIdData = tableInternalData.fullDataRowIdData;
|
|
289
289
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
290
290
|
var radioOpts = computeRadioOpts.value;
|
|
291
291
|
var treeOpts = computeTreeOpts.value;
|
|
@@ -295,10 +295,6 @@ export default defineComponent({
|
|
|
295
295
|
tableData.forEach(function (row, $rowIndex) {
|
|
296
296
|
var trOn = {};
|
|
297
297
|
var rowIndex = $rowIndex;
|
|
298
|
-
var seq = rowIndex + 1;
|
|
299
|
-
if (scrollYLoad) {
|
|
300
|
-
seq += scrollYStore.startIndex;
|
|
301
|
-
}
|
|
302
298
|
var _rowIndex = $xetable.getVTRowIndex(row);
|
|
303
299
|
// 确保任何情况下 rowIndex 都精准指向真实 data 索引
|
|
304
300
|
rowIndex = $xetable.getRowIndex(row);
|
|
@@ -318,9 +314,10 @@ export default defineComponent({
|
|
|
318
314
|
};
|
|
319
315
|
}
|
|
320
316
|
var rowid = getRowid($xetable, row);
|
|
321
|
-
var rest =
|
|
317
|
+
var rest = fullDataRowIdData[rowid];
|
|
322
318
|
var rowLevel = rest ? rest.level : 0;
|
|
323
|
-
var
|
|
319
|
+
var seq = rest ? rest.seq : -1;
|
|
320
|
+
var params = { $table: $xetable, seq: seq, rowid: rowid, fixed: fixedType, type: renderType, level: rowLevel, row: row, rowIndex: rowIndex, $rowIndex: $rowIndex, _rowIndex: _rowIndex };
|
|
324
321
|
var isNewRow = false;
|
|
325
322
|
if (editConfig) {
|
|
326
323
|
isNewRow = $xetable.findRowIndexOf(editStore.insertList, row) > -1;
|
|
@@ -332,7 +329,7 @@ export default defineComponent({
|
|
|
332
329
|
'row--radio': radioOpts.highlight && selectRow === row,
|
|
333
330
|
'row--checked': checkboxOpts.highlight && $xetable.isCheckedByCheckboxRow(row)
|
|
334
331
|
}, rowClassName ? (XEUtils.isFunction(rowClassName) ? rowClassName(params) : rowClassName) : ''], rowid: rowid, style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : null, key: rowKey || treeConfig ? rowid : $rowIndex }, trOn), tableColumn.map(function (column, $columnIndex) {
|
|
335
|
-
return renderColumn(
|
|
332
|
+
return renderColumn(seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData);
|
|
336
333
|
})));
|
|
337
334
|
// 如果行被展开了
|
|
338
335
|
if (expandColumn && rowExpandeds.length && $xetable.findRowIndexOf(rowExpandeds, row) > -1) {
|
|
@@ -344,7 +341,7 @@ export default defineComponent({
|
|
|
344
341
|
}
|
|
345
342
|
var showOverflow = expandColumn.showOverflow;
|
|
346
343
|
var hasEllipsis = (XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow)) ? allColumnOverflow : showOverflow;
|
|
347
|
-
var expandParams = { $table: $xetable,
|
|
344
|
+
var expandParams = { $table: $xetable, seq: seq, column: expandColumn, fixed: fixedType, type: renderType, level: rowLevel, row: row, rowIndex: rowIndex, $rowIndex: $rowIndex, _rowIndex: _rowIndex };
|
|
348
345
|
rows.push(h('tr', __assign({ class: 'vxe-body--expanded-row', key: "expand_" + rowid, style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(expandParams) : rowStyle) : null }, trOn), [
|
|
349
346
|
h('td', {
|
|
350
347
|
class: ['vxe-body--expanded-column', {
|
|
@@ -366,7 +363,7 @@ export default defineComponent({
|
|
|
366
363
|
if (treeConfig && !scrollYLoad && treeExpandeds.length) {
|
|
367
364
|
var rowChildren = row[treeOpts.children];
|
|
368
365
|
if (rowChildren && rowChildren.length && $xetable.findRowIndexOf(treeExpandeds, row) > -1) {
|
|
369
|
-
rows.push.apply(rows, renderRows(
|
|
366
|
+
rows.push.apply(rows, renderRows(fixedType, rowChildren, tableColumn));
|
|
370
367
|
}
|
|
371
368
|
}
|
|
372
369
|
});
|
|
@@ -655,7 +652,7 @@ export default defineComponent({
|
|
|
655
652
|
*/
|
|
656
653
|
h('tbody', {
|
|
657
654
|
ref: refBodyTBody
|
|
658
|
-
}, renderRows(
|
|
655
|
+
}, renderRows(fixedType, tableData, tableColumn))
|
|
659
656
|
]),
|
|
660
657
|
h('div', {
|
|
661
658
|
class: 'vxe-table--checkbox-range'
|
package/es/table/src/cell.js
CHANGED
|
@@ -105,16 +105,16 @@ export var Cell = {
|
|
|
105
105
|
};
|
|
106
106
|
switch (type) {
|
|
107
107
|
case 'seq':
|
|
108
|
-
renConfs.renderHeader = Cell.
|
|
109
|
-
renConfs.renderCell = treeNode ? Cell.renderTreeIndexCell : Cell.
|
|
108
|
+
renConfs.renderHeader = Cell.renderSeqHeader;
|
|
109
|
+
renConfs.renderCell = treeNode ? Cell.renderTreeIndexCell : Cell.renderSeqCell;
|
|
110
110
|
break;
|
|
111
111
|
case 'radio':
|
|
112
112
|
renConfs.renderHeader = Cell.renderRadioHeader;
|
|
113
113
|
renConfs.renderCell = treeNode ? Cell.renderTreeRadioCell : Cell.renderRadioCell;
|
|
114
114
|
break;
|
|
115
115
|
case 'checkbox':
|
|
116
|
-
renConfs.renderHeader = Cell.
|
|
117
|
-
renConfs.renderCell = checkboxOpts.checkField ? (treeNode ? Cell.renderTreeSelectionCellByProp : Cell.
|
|
116
|
+
renConfs.renderHeader = Cell.renderCheckboxHeader;
|
|
117
|
+
renConfs.renderCell = checkboxOpts.checkField ? (treeNode ? Cell.renderTreeSelectionCellByProp : Cell.renderCheckboxCellByProp) : (treeNode ? Cell.renderTreeSelectionCell : Cell.renderCheckboxCell);
|
|
118
118
|
break;
|
|
119
119
|
case 'expand':
|
|
120
120
|
renConfs.renderCell = Cell.renderExpandCell;
|
|
@@ -266,14 +266,16 @@ export var Cell = {
|
|
|
266
266
|
/**
|
|
267
267
|
* 索引
|
|
268
268
|
*/
|
|
269
|
-
|
|
269
|
+
renderSeqHeader: function (params) {
|
|
270
270
|
var $table = params.$table, column = params.column;
|
|
271
271
|
var slots = column.slots;
|
|
272
272
|
var headerSlot = slots ? slots.header : null;
|
|
273
273
|
return renderTitleContent(params, headerSlot ? $table.callSlot(headerSlot, params) : formatText(column.getTitle(), 1));
|
|
274
274
|
},
|
|
275
|
-
|
|
275
|
+
renderSeqCell: function (params) {
|
|
276
276
|
var $table = params.$table, column = params.column;
|
|
277
|
+
var props = $table.props;
|
|
278
|
+
var treeConfig = props.treeConfig;
|
|
277
279
|
var computeSeqOpts = $table.getComputeMaps().computeSeqOpts;
|
|
278
280
|
var seqOpts = computeSeqOpts.value;
|
|
279
281
|
var slots = column.slots;
|
|
@@ -281,12 +283,12 @@ export var Cell = {
|
|
|
281
283
|
if (defaultSlot) {
|
|
282
284
|
return $table.callSlot(defaultSlot, params);
|
|
283
285
|
}
|
|
284
|
-
var
|
|
286
|
+
var seq = params.seq;
|
|
285
287
|
var seqMethod = seqOpts.seqMethod;
|
|
286
|
-
return [formatText(seqMethod ? seqMethod(params) :
|
|
288
|
+
return [formatText(seqMethod ? seqMethod(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + seq, 1)];
|
|
287
289
|
},
|
|
288
290
|
renderTreeIndexCell: function (params) {
|
|
289
|
-
return Cell.renderTreeIcon(params, Cell.
|
|
291
|
+
return Cell.renderTreeIcon(params, Cell.renderSeqCell(params));
|
|
290
292
|
},
|
|
291
293
|
/**
|
|
292
294
|
* 单选
|
|
@@ -359,7 +361,7 @@ export var Cell = {
|
|
|
359
361
|
/**
|
|
360
362
|
* 多选
|
|
361
363
|
*/
|
|
362
|
-
|
|
364
|
+
renderCheckboxHeader: function (params) {
|
|
363
365
|
var $table = params.$table, column = params.column, isHidden = params.isHidden;
|
|
364
366
|
var reactData = $table.reactData;
|
|
365
367
|
var _a = $table.getComputeMaps(), computeIsAllCheckboxDisabled = _a.computeIsAllCheckboxDisabled, computeCheckboxOpts = _a.computeCheckboxOpts;
|
|
@@ -415,7 +417,7 @@ export var Cell = {
|
|
|
415
417
|
] : []))
|
|
416
418
|
]);
|
|
417
419
|
},
|
|
418
|
-
|
|
420
|
+
renderCheckboxCell: function (params) {
|
|
419
421
|
var $table = params.$table, row = params.row, column = params.column, isHidden = params.isHidden;
|
|
420
422
|
var props = $table.props, reactData = $table.reactData;
|
|
421
423
|
var treeConfig = props.treeConfig;
|
|
@@ -475,9 +477,9 @@ export var Cell = {
|
|
|
475
477
|
];
|
|
476
478
|
},
|
|
477
479
|
renderTreeSelectionCell: function (params) {
|
|
478
|
-
return Cell.renderTreeIcon(params, Cell.
|
|
480
|
+
return Cell.renderTreeIcon(params, Cell.renderCheckboxCell(params));
|
|
479
481
|
},
|
|
480
|
-
|
|
482
|
+
renderCheckboxCellByProp: function (params) {
|
|
481
483
|
var $table = params.$table, row = params.row, column = params.column, isHidden = params.isHidden;
|
|
482
484
|
var props = $table.props, reactData = $table.reactData;
|
|
483
485
|
var treeConfig = props.treeConfig;
|
|
@@ -537,7 +539,7 @@ export var Cell = {
|
|
|
537
539
|
];
|
|
538
540
|
},
|
|
539
541
|
renderTreeSelectionCellByProp: function (params) {
|
|
540
|
-
return Cell.renderTreeIcon(params, Cell.
|
|
542
|
+
return Cell.renderTreeIcon(params, Cell.renderCheckboxCellByProp(params));
|
|
541
543
|
},
|
|
542
544
|
/**
|
|
543
545
|
* 展开行
|
package/es/table/src/table.js
CHANGED
|
@@ -27,7 +27,7 @@ import Cell from './cell';
|
|
|
27
27
|
import TableBodyComponent from './body';
|
|
28
28
|
import tableProps from './props';
|
|
29
29
|
import tableEmits from './emits';
|
|
30
|
-
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, restoreScrollLocation, restoreScrollListener } from './util';
|
|
30
|
+
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, restoreScrollListener } from './util';
|
|
31
31
|
var isWebkit = browse['-webkit'] && !browse.edge;
|
|
32
32
|
var resizableStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_WIDTH';
|
|
33
33
|
var visibleStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_VISIBLE';
|
|
@@ -276,8 +276,9 @@ export default defineComponent({
|
|
|
276
276
|
tableFullColumn: [],
|
|
277
277
|
// 渲染所有列
|
|
278
278
|
visibleColumn: [],
|
|
279
|
-
//
|
|
279
|
+
// 总的缓存数据集
|
|
280
280
|
fullAllDataRowIdData: {},
|
|
281
|
+
// 渲染中缓存数据
|
|
281
282
|
fullDataRowIdData: {},
|
|
282
283
|
fullColumnIdData: {},
|
|
283
284
|
fullColumnFieldData: {},
|
|
@@ -1081,18 +1082,52 @@ export default defineComponent({
|
|
|
1081
1082
|
return cellValue;
|
|
1082
1083
|
};
|
|
1083
1084
|
};
|
|
1085
|
+
/**
|
|
1086
|
+
* 预编译
|
|
1087
|
+
* 对渲染中的数据提前解析序号及索引。牺牲提前编译耗时换取渲染中额外损耗,使运行时更加流畅
|
|
1088
|
+
*/
|
|
1084
1089
|
var updateAfterDataIndex = function () {
|
|
1085
|
-
var
|
|
1086
|
-
afterFullData.
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1090
|
+
var treeConfig = props.treeConfig;
|
|
1091
|
+
var afterFullData = internalData.afterFullData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
1092
|
+
var treeFullData = internalData.treeFullData;
|
|
1093
|
+
var treeOpts = computeTreeOpts.value;
|
|
1094
|
+
if (treeConfig) {
|
|
1095
|
+
XEUtils.eachTree(treeFullData, function (row, index, items, path) {
|
|
1096
|
+
var rowid = getRowid($xetable, row);
|
|
1097
|
+
var allrest = fullAllDataRowIdData[rowid];
|
|
1098
|
+
var fullrest = fullDataRowIdData[rowid];
|
|
1099
|
+
var seq = path.map(function (num, i) { return i % 2 === 0 ? (Number(num) + 1) : '.'; }).join('');
|
|
1100
|
+
if (allrest) {
|
|
1101
|
+
allrest.seq = seq;
|
|
1102
|
+
}
|
|
1103
|
+
if (fullrest) {
|
|
1104
|
+
fullrest.seq = seq;
|
|
1105
|
+
}
|
|
1106
|
+
else {
|
|
1107
|
+
fullAllDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1108
|
+
fullDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1109
|
+
}
|
|
1110
|
+
}, treeOpts);
|
|
1111
|
+
}
|
|
1112
|
+
else {
|
|
1113
|
+
afterFullData.forEach(function (row, index) {
|
|
1114
|
+
var rowid = getRowid($xetable, row);
|
|
1115
|
+
var allrest = fullAllDataRowIdData[rowid];
|
|
1116
|
+
var fullrest = fullDataRowIdData[rowid];
|
|
1117
|
+
var seq = index + 1;
|
|
1118
|
+
if (allrest) {
|
|
1119
|
+
allrest.seq = seq;
|
|
1120
|
+
}
|
|
1121
|
+
if (fullrest) {
|
|
1122
|
+
fullrest.seq = seq;
|
|
1123
|
+
fullrest._index = index;
|
|
1124
|
+
}
|
|
1125
|
+
else {
|
|
1126
|
+
fullAllDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1127
|
+
fullDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1128
|
+
}
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1096
1131
|
};
|
|
1097
1132
|
/**
|
|
1098
1133
|
* 获取处理后全量的表格数据
|
|
@@ -2016,11 +2051,11 @@ export default defineComponent({
|
|
|
2016
2051
|
tableMethods.clearMergeFooterItems();
|
|
2017
2052
|
}
|
|
2018
2053
|
reactData.scrollXLoad = scrollXLoad;
|
|
2019
|
-
visibleColumn.forEach(function (column,
|
|
2054
|
+
visibleColumn.forEach(function (column, index) {
|
|
2020
2055
|
var colid = column.id;
|
|
2021
2056
|
var rest = fullColumnIdData[colid];
|
|
2022
2057
|
if (rest) {
|
|
2023
|
-
rest._index =
|
|
2058
|
+
rest._index = index;
|
|
2024
2059
|
}
|
|
2025
2060
|
});
|
|
2026
2061
|
internalData.visibleColumn = visibleColumn;
|
|
@@ -2173,6 +2208,31 @@ export default defineComponent({
|
|
|
2173
2208
|
}
|
|
2174
2209
|
}
|
|
2175
2210
|
};
|
|
2211
|
+
var createGetRowCacheProp = function (prop) {
|
|
2212
|
+
return function (row) {
|
|
2213
|
+
var fullDataRowIdData = internalData.fullDataRowIdData;
|
|
2214
|
+
if (row) {
|
|
2215
|
+
var rowid = getRowid($xetable, row);
|
|
2216
|
+
var rest = fullDataRowIdData[rowid];
|
|
2217
|
+
if (rest) {
|
|
2218
|
+
return rest[prop];
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
return -1;
|
|
2222
|
+
};
|
|
2223
|
+
};
|
|
2224
|
+
var createGetColumnCacheProp = function (prop) {
|
|
2225
|
+
return function (column) {
|
|
2226
|
+
var fullColumnIdData = internalData.fullColumnIdData;
|
|
2227
|
+
if (column) {
|
|
2228
|
+
var rest = fullColumnIdData[column.id];
|
|
2229
|
+
if (rest) {
|
|
2230
|
+
return rest[prop];
|
|
2231
|
+
}
|
|
2232
|
+
}
|
|
2233
|
+
return -1;
|
|
2234
|
+
};
|
|
2235
|
+
};
|
|
2176
2236
|
var debounceScrollY = XEUtils.debounce(function (evnt) {
|
|
2177
2237
|
loadScrollYData(evnt);
|
|
2178
2238
|
}, 20, { leading: false, trailing: true });
|
|
@@ -2298,7 +2358,7 @@ export default defineComponent({
|
|
|
2298
2358
|
}
|
|
2299
2359
|
XEUtils.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
|
|
2300
2360
|
var rowid = getRowid($xetable, childRow);
|
|
2301
|
-
var rest = { row: childRow, rowid: rowid, index: -1, _index: -1, $index: -1, items: items, parent: parent, level: parentLevel + nodes.length };
|
|
2361
|
+
var rest = { row: childRow, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: items, parent: parent, level: parentLevel + nodes.length };
|
|
2302
2362
|
fullDataRowIdData[rowid] = rest;
|
|
2303
2363
|
fullAllDataRowIdData[rowid] = rest;
|
|
2304
2364
|
}, treeOpts);
|
|
@@ -2359,93 +2419,41 @@ export default defineComponent({
|
|
|
2359
2419
|
}
|
|
2360
2420
|
return null;
|
|
2361
2421
|
},
|
|
2422
|
+
/**
|
|
2423
|
+
* 根据 row 获取序号
|
|
2424
|
+
* @param {Row} row 行对象
|
|
2425
|
+
*/
|
|
2426
|
+
getRowSeq: createGetRowCacheProp('seq'),
|
|
2362
2427
|
/**
|
|
2363
2428
|
* 根据 row 获取相对于 data 中的索引
|
|
2364
2429
|
* @param {Row} row 行对象
|
|
2365
2430
|
*/
|
|
2366
|
-
getRowIndex:
|
|
2367
|
-
var fullDataRowIdData = internalData.fullDataRowIdData;
|
|
2368
|
-
if (row) {
|
|
2369
|
-
var rowid = getRowid($xetable, row);
|
|
2370
|
-
var rest = fullDataRowIdData[rowid];
|
|
2371
|
-
if (rest) {
|
|
2372
|
-
return rest.index;
|
|
2373
|
-
}
|
|
2374
|
-
}
|
|
2375
|
-
return -1;
|
|
2376
|
-
},
|
|
2431
|
+
getRowIndex: createGetRowCacheProp('index'),
|
|
2377
2432
|
/**
|
|
2378
2433
|
* 根据 row 获取相对于当前数据中的索引
|
|
2379
2434
|
* @param {Row} row 行对象
|
|
2380
2435
|
*/
|
|
2381
|
-
getVTRowIndex:
|
|
2382
|
-
var fullDataRowIdData = internalData.fullDataRowIdData;
|
|
2383
|
-
if (row) {
|
|
2384
|
-
var rowid = getRowid($xetable, row);
|
|
2385
|
-
var rest = fullDataRowIdData[rowid];
|
|
2386
|
-
if (rest) {
|
|
2387
|
-
return rest._index;
|
|
2388
|
-
}
|
|
2389
|
-
}
|
|
2390
|
-
return -1;
|
|
2391
|
-
},
|
|
2436
|
+
getVTRowIndex: createGetRowCacheProp('_index'),
|
|
2392
2437
|
/**
|
|
2393
2438
|
* 根据 row 获取渲染中的虚拟索引
|
|
2394
2439
|
* @param {Row} row 行对象
|
|
2395
2440
|
*/
|
|
2396
|
-
getVMRowIndex:
|
|
2397
|
-
var fullDataRowIdData = internalData.fullDataRowIdData;
|
|
2398
|
-
if (row) {
|
|
2399
|
-
var rowid = getRowid($xetable, row);
|
|
2400
|
-
var rest = fullDataRowIdData[rowid];
|
|
2401
|
-
if (rest) {
|
|
2402
|
-
return rest.$index;
|
|
2403
|
-
}
|
|
2404
|
-
}
|
|
2405
|
-
return -1;
|
|
2406
|
-
},
|
|
2441
|
+
getVMRowIndex: createGetRowCacheProp('$index'),
|
|
2407
2442
|
/**
|
|
2408
2443
|
* 根据 column 获取相对于 columns 中的索引
|
|
2409
2444
|
* @param {ColumnInfo} column 列配置
|
|
2410
2445
|
*/
|
|
2411
|
-
getColumnIndex:
|
|
2412
|
-
var fullColumnIdData = internalData.fullColumnIdData;
|
|
2413
|
-
if (column) {
|
|
2414
|
-
var rest = fullColumnIdData[column.id];
|
|
2415
|
-
if (rest) {
|
|
2416
|
-
return rest.index;
|
|
2417
|
-
}
|
|
2418
|
-
}
|
|
2419
|
-
return -1;
|
|
2420
|
-
},
|
|
2446
|
+
getColumnIndex: createGetColumnCacheProp('index'),
|
|
2421
2447
|
/**
|
|
2422
2448
|
* 根据 column 获取相对于当前表格列中的索引
|
|
2423
2449
|
* @param {ColumnInfo} column 列配置
|
|
2424
2450
|
*/
|
|
2425
|
-
getVTColumnIndex:
|
|
2426
|
-
var fullColumnIdData = internalData.fullColumnIdData;
|
|
2427
|
-
if (column) {
|
|
2428
|
-
var rest = fullColumnIdData[column.id];
|
|
2429
|
-
if (rest) {
|
|
2430
|
-
return rest._index;
|
|
2431
|
-
}
|
|
2432
|
-
}
|
|
2433
|
-
return -1;
|
|
2434
|
-
},
|
|
2451
|
+
getVTColumnIndex: createGetColumnCacheProp('_index'),
|
|
2435
2452
|
/**
|
|
2436
2453
|
* 根据 column 获取渲染中的虚拟索引
|
|
2437
2454
|
* @param {ColumnInfo} column 列配置
|
|
2438
2455
|
*/
|
|
2439
|
-
getVMColumnIndex:
|
|
2440
|
-
var fullColumnIdData = internalData.fullColumnIdData;
|
|
2441
|
-
if (column) {
|
|
2442
|
-
var rest = fullColumnIdData[column.id];
|
|
2443
|
-
if (rest) {
|
|
2444
|
-
return rest.$index;
|
|
2445
|
-
}
|
|
2446
|
-
}
|
|
2447
|
-
return -1;
|
|
2448
|
-
},
|
|
2456
|
+
getVMColumnIndex: createGetColumnCacheProp('$index'),
|
|
2449
2457
|
/**
|
|
2450
2458
|
* 创建 data 对象
|
|
2451
2459
|
* 对于某些特殊场景可能会用到,会自动对数据的字段名进行检测,如果不存在就自动定义
|
|
@@ -4463,6 +4471,8 @@ export default defineComponent({
|
|
|
4463
4471
|
var isLazy = treeConfig && treeOpts.lazy;
|
|
4464
4472
|
var handleCache = function (row, index, items, path, parent, nodes) {
|
|
4465
4473
|
var rowid = getRowid($xetable, row);
|
|
4474
|
+
var seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
|
|
4475
|
+
var level = nodes ? nodes.length - 1 : 0;
|
|
4466
4476
|
if (eqEmptyValue(rowid)) {
|
|
4467
4477
|
rowid = getRowUniqueId();
|
|
4468
4478
|
XEUtils.set(row, rowkey, rowid);
|
|
@@ -4470,7 +4480,7 @@ export default defineComponent({
|
|
|
4470
4480
|
if (isLazy && row[treeOpts.hasChild] && XEUtils.isUndefined(row[treeOpts.children])) {
|
|
4471
4481
|
row[treeOpts.children] = null;
|
|
4472
4482
|
}
|
|
4473
|
-
var rest = { row: row, rowid: rowid, index: treeConfig && parent ? -1 : index, _index: -1, $index: -1, items: items, parent: parent, level:
|
|
4483
|
+
var rest = { row: row, rowid: rowid, seq: seq, index: treeConfig && parent ? -1 : index, _index: -1, $index: -1, items: items, parent: parent, level: level };
|
|
4474
4484
|
if (isSource) {
|
|
4475
4485
|
fullDataRowIdData[rowid] = rest;
|
|
4476
4486
|
}
|
package/es/table/src/util.js
CHANGED
|
@@ -77,6 +77,9 @@ export function toFilters(filters) {
|
|
|
77
77
|
}
|
|
78
78
|
return filters;
|
|
79
79
|
}
|
|
80
|
+
export function toTreePathSeq(path) {
|
|
81
|
+
return path.map(function (num, i) { return i % 2 === 0 ? (Number(num) + 1) : '.'; }).join('');
|
|
82
|
+
}
|
|
80
83
|
export function getCellValue(row, column) {
|
|
81
84
|
return XEUtils.get(row, column.property);
|
|
82
85
|
}
|
package/es/tools/dom.js
CHANGED
|
@@ -123,13 +123,7 @@ export function scrollToView(elem) {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
export function triggerEvent(targetElem, type) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
evnt = new Event(type);
|
|
126
|
+
if (targetElem) {
|
|
127
|
+
targetElem.dispatchEvent(new Event(type));
|
|
129
128
|
}
|
|
130
|
-
else {
|
|
131
|
-
evnt = document.createEvent('Event');
|
|
132
|
-
evnt.initEvent(type, true, true);
|
|
133
|
-
}
|
|
134
|
-
targetElem.dispatchEvent(evnt);
|
|
135
129
|
}
|