vxe-table 4.13.1 → 4.13.3
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/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/filter/hook.js +30 -11
- package/es/table/module/filter/panel.js +47 -20
- package/es/table/module/menu/hook.js +1 -1
- package/es/table/src/body.js +6 -4
- package/es/table/src/footer.js +3 -2
- package/es/table/src/header.js +3 -2
- package/es/table/src/table.js +42 -17
- package/es/table/style.css +18 -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 +18 -0
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +101 -40
- 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/filter/hook.js +34 -10
- package/lib/table/module/filter/hook.min.js +1 -1
- package/lib/table/module/filter/panel.js +37 -8
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/menu/hook.js +1 -1
- package/lib/table/module/menu/hook.min.js +1 -1
- package/lib/table/src/body.js +8 -3
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +4 -2
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +4 -2
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/table.js +863 -12307
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +18 -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 +18 -0
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/table/module/filter/hook.ts +28 -11
- package/packages/table/module/filter/panel.ts +52 -20
- package/packages/table/module/menu/hook.ts +1 -1
- package/packages/table/src/body.ts +6 -4
- package/packages/table/src/footer.ts +3 -2
- package/packages/table/src/header.ts +3 -2
- package/packages/table/src/table.ts +43 -18
- package/styles/components/table-module/filter.scss +16 -0
- package/styles/components/table.scss +6 -1
- /package/es/{iconfont.1744337102291.ttf → iconfont.1744609856022.ttf} +0 -0
- /package/es/{iconfont.1744337102291.woff → iconfont.1744609856022.woff} +0 -0
- /package/es/{iconfont.1744337102291.woff2 → iconfont.1744609856022.woff2} +0 -0
- /package/lib/{iconfont.1744337102291.ttf → iconfont.1744609856022.ttf} +0 -0
- /package/lib/{iconfont.1744337102291.woff → iconfont.1744609856022.woff} +0 -0
- /package/lib/{iconfont.1744337102291.woff2 → iconfont.1744609856022.woff2} +0 -0
|
@@ -2,7 +2,7 @@ import { nextTick } from 'vue';
|
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import { VxeUI } from '../../../ui';
|
|
4
4
|
import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
|
|
5
|
-
import { toCssUnit, triggerEvent } from '../../../ui/src/dom';
|
|
5
|
+
import { toCssUnit, triggerEvent, getDomNode } from '../../../ui/src/dom';
|
|
6
6
|
import { isEnableConf } from '../../../ui/src/utils';
|
|
7
7
|
const { renderer, hooks } = VxeUI;
|
|
8
8
|
const tableFilterMethodKeys = ['openFilter', 'setFilter', 'clearFilter', 'saveFilterPanel', 'resetFilterPanel', 'getCheckedFilters', 'updateFilterOptionStatus'];
|
|
@@ -67,6 +67,9 @@ hooks.add('tableFilterModule', {
|
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
69
|
const el = refElem.value;
|
|
70
|
+
const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode();
|
|
71
|
+
const filterOpts = computeFilterOpts.value;
|
|
72
|
+
const { transfer } = filterOpts;
|
|
70
73
|
const tableRect = el.getBoundingClientRect();
|
|
71
74
|
const btnElem = evnt.currentTarget;
|
|
72
75
|
const { filters, filterMultiple, filterRender } = column;
|
|
@@ -98,29 +101,45 @@ hooks.add('tableFilterModule', {
|
|
|
98
101
|
return;
|
|
99
102
|
}
|
|
100
103
|
const tableFilter = refTableFilter.value;
|
|
101
|
-
const filterWrapperElem = tableFilter ? tableFilter
|
|
104
|
+
const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
|
|
102
105
|
if (!filterWrapperElem) {
|
|
103
106
|
return;
|
|
104
107
|
}
|
|
105
108
|
const btnRect = btnElem.getBoundingClientRect();
|
|
106
|
-
const filterWidth = filterWrapperElem.offsetWidth;
|
|
107
109
|
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
108
110
|
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
111
|
+
const filterWidth = filterWrapperElem.offsetWidth;
|
|
109
112
|
const centerWidth = filterWidth / 2;
|
|
110
|
-
let left =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
let left = 0;
|
|
114
|
+
let top = 0;
|
|
115
|
+
let maxHeight = 0;
|
|
116
|
+
if (transfer) {
|
|
117
|
+
left = btnRect.left - centerWidth + scrollLeft;
|
|
118
|
+
top = btnRect.top + btnElem.clientHeight + scrollTop;
|
|
119
|
+
maxHeight = Math.min(Math.max(tableRect.height, Math.floor(visibleHeight / 2)), Math.max(80, visibleHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 28));
|
|
120
|
+
if (left < 16) {
|
|
121
|
+
left = 16;
|
|
122
|
+
}
|
|
123
|
+
else if (left > (visibleWidth - filterWidth - 16)) {
|
|
124
|
+
left = visibleWidth - filterWidth - 16;
|
|
125
|
+
}
|
|
116
126
|
}
|
|
117
|
-
else
|
|
118
|
-
left =
|
|
127
|
+
else {
|
|
128
|
+
left = btnRect.left - tableRect.left - centerWidth;
|
|
129
|
+
top = btnRect.top - tableRect.top + btnElem.clientHeight;
|
|
130
|
+
maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
|
|
131
|
+
if (left < 1) {
|
|
132
|
+
left = 1;
|
|
133
|
+
}
|
|
134
|
+
else if (left > (el.clientWidth - filterWidth - 1)) {
|
|
135
|
+
left = el.clientWidth - filterWidth - 1;
|
|
136
|
+
}
|
|
119
137
|
}
|
|
120
138
|
filterStore.style = {
|
|
121
139
|
top: toCssUnit(top),
|
|
122
140
|
left: toCssUnit(left)
|
|
123
141
|
};
|
|
142
|
+
// 判断面板不能大于表格高度
|
|
124
143
|
filterStore.maxHeight = maxHeight;
|
|
125
144
|
});
|
|
126
145
|
}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
import { defineComponent, h, computed, inject } from 'vue';
|
|
1
|
+
import { defineComponent, h, ref, computed, inject, Teleport } from 'vue';
|
|
2
2
|
import { VxeUI } from '../../../ui';
|
|
3
3
|
import { formatText, isEnableConf } from '../../../ui/src/utils';
|
|
4
4
|
import { getPropClass } from '../../../ui/src/dom';
|
|
5
5
|
import { getSlotVNs } from '../../../ui/src/vn';
|
|
6
|
+
import XEUtils from 'xe-utils';
|
|
6
7
|
const { getI18n, getIcon, renderer } = VxeUI;
|
|
7
8
|
export default defineComponent({
|
|
8
9
|
name: 'VxeTableFilterPanel',
|
|
9
10
|
props: {
|
|
10
11
|
filterStore: Object
|
|
11
12
|
},
|
|
12
|
-
setup(props) {
|
|
13
|
+
setup(props, context) {
|
|
14
|
+
const xID = XEUtils.uniqueId();
|
|
13
15
|
const $xeTable = inject('$xeTable', {});
|
|
14
16
|
const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xeTable;
|
|
15
17
|
const { computeFilterOpts } = getComputeMaps();
|
|
18
|
+
const refElem = ref();
|
|
19
|
+
const refMaps = {
|
|
20
|
+
refElem
|
|
21
|
+
};
|
|
22
|
+
const $xeFilterPanel = {
|
|
23
|
+
xID,
|
|
24
|
+
props,
|
|
25
|
+
context,
|
|
26
|
+
getRefMaps: () => refMaps
|
|
27
|
+
};
|
|
16
28
|
const computeHasCheckOption = computed(() => {
|
|
17
29
|
const { filterStore } = props;
|
|
18
30
|
return filterStore && filterStore.options.some((option) => option.checked);
|
|
@@ -66,7 +78,7 @@ export default defineComponent({
|
|
|
66
78
|
/*************************
|
|
67
79
|
* Publish methods
|
|
68
80
|
*************************/
|
|
69
|
-
const
|
|
81
|
+
const filterPanelMethods = {
|
|
70
82
|
changeRadioOption,
|
|
71
83
|
changeMultipleOption,
|
|
72
84
|
changeAllOption,
|
|
@@ -74,12 +86,13 @@ export default defineComponent({
|
|
|
74
86
|
confirmFilter,
|
|
75
87
|
resetFilter
|
|
76
88
|
};
|
|
89
|
+
Object.assign($xeFilterPanel, filterPanelMethods);
|
|
77
90
|
const renderOptions = (filterRender, compConf) => {
|
|
78
91
|
const { filterStore } = props;
|
|
79
92
|
const { column, multiple, maxHeight } = filterStore;
|
|
80
93
|
const slots = column ? column.slots : null;
|
|
81
94
|
const filterSlot = slots ? slots.filter : null;
|
|
82
|
-
const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
|
|
95
|
+
const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
|
|
83
96
|
const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null;
|
|
84
97
|
if (filterSlot) {
|
|
85
98
|
return [
|
|
@@ -198,23 +211,37 @@ export default defineComponent({
|
|
|
198
211
|
const filterRender = column ? column.filterRender : null;
|
|
199
212
|
const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
200
213
|
const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : '';
|
|
201
|
-
const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
|
|
214
|
+
const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
|
|
215
|
+
const tableProps = $xeTable.props;
|
|
216
|
+
const { computeSize } = $xeTable.getComputeMaps();
|
|
217
|
+
const vSize = computeSize.value;
|
|
202
218
|
const filterOpts = computeFilterOpts.value;
|
|
203
|
-
const { destroyOnClose } = filterOpts;
|
|
204
|
-
return h(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
'
|
|
212
|
-
'
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
219
|
+
const { transfer, destroyOnClose } = filterOpts;
|
|
220
|
+
return h(Teleport, {
|
|
221
|
+
to: 'body',
|
|
222
|
+
disabled: !transfer
|
|
223
|
+
}, [
|
|
224
|
+
h('div', {
|
|
225
|
+
ref: refElem,
|
|
226
|
+
class: [
|
|
227
|
+
'vxe-table--filter-wrapper',
|
|
228
|
+
'filter--prevent-default',
|
|
229
|
+
getPropClass(filterClassName, params),
|
|
230
|
+
{
|
|
231
|
+
[`size--${vSize}`]: vSize,
|
|
232
|
+
'is--animat': tableProps.animat,
|
|
233
|
+
'is--multiple': multiple,
|
|
234
|
+
'is--active': visible
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
style: filterStore.style
|
|
238
|
+
}, initStore.filter && (destroyOnClose ? visible : true) && column ? renderOptions(filterRender, compConf).concat(renderFooters()) : [])
|
|
239
|
+
]);
|
|
217
240
|
};
|
|
218
|
-
|
|
241
|
+
$xeFilterPanel.renderVN = renderVN;
|
|
242
|
+
return $xeFilterPanel;
|
|
243
|
+
},
|
|
244
|
+
render() {
|
|
245
|
+
return this.renderVN();
|
|
219
246
|
}
|
|
220
247
|
});
|
|
@@ -225,7 +225,7 @@ hooks.add('tableMenuModule', {
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
|
-
if (tableFilter && !getEventTargetNode(evnt, tableFilter
|
|
228
|
+
if (tableFilter && !getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
|
|
229
229
|
$xeTable.closeFilter();
|
|
230
230
|
}
|
|
231
231
|
menuMethods.closeMenu();
|
package/es/table/src/body.js
CHANGED
|
@@ -21,7 +21,7 @@ export default defineComponent({
|
|
|
21
21
|
setup(props) {
|
|
22
22
|
const $xeTable = inject('$xeTable', {});
|
|
23
23
|
const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
|
|
24
|
-
const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts } = $xeTable.getComputeMaps();
|
|
24
|
+
const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts } = $xeTable.getComputeMaps();
|
|
25
25
|
const refElem = ref();
|
|
26
26
|
const refBodyScroll = ref();
|
|
27
27
|
const refBodyTable = ref();
|
|
@@ -77,7 +77,7 @@ export default defineComponent({
|
|
|
77
77
|
*/
|
|
78
78
|
const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => {
|
|
79
79
|
const $xeGrid = $xeTable.xeGrid;
|
|
80
|
-
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
|
|
80
|
+
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
|
|
81
81
|
const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps } = tableReactData;
|
|
82
82
|
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore } = tableInternalData;
|
|
83
83
|
const cellOpts = computeCellOpts.value;
|
|
@@ -86,6 +86,8 @@ export default defineComponent({
|
|
|
86
86
|
const editOpts = computeEditOpts.value;
|
|
87
87
|
const tooltipOpts = computeTooltipOpts.value;
|
|
88
88
|
const resizableOpts = computeResizableOpts.value;
|
|
89
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
90
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
89
91
|
const { isAllColumnDrag, isAllRowDrag } = resizableOpts;
|
|
90
92
|
const rowOpts = computeRowOpts.value;
|
|
91
93
|
const rowDragOpts = computeRowDragOpts.value;
|
|
@@ -254,10 +256,10 @@ export default defineComponent({
|
|
|
254
256
|
let isVNPreEmptyStatus = false;
|
|
255
257
|
if (!isMergeCell) {
|
|
256
258
|
if (!dragRow || getRowid($xeTable, dragRow) !== rowid) {
|
|
257
|
-
if (scrollYLoad && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
|
|
259
|
+
if (scrollYLoad && !treeConfig && !virtualYOpts.immediate && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
|
|
258
260
|
isVNPreEmptyStatus = true;
|
|
259
261
|
}
|
|
260
|
-
else if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
262
|
+
else if (scrollXLoad && !virtualXOpts.immediate && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
261
263
|
isVNPreEmptyStatus = true;
|
|
262
264
|
}
|
|
263
265
|
}
|
package/es/table/src/footer.js
CHANGED
|
@@ -28,7 +28,7 @@ export default defineComponent({
|
|
|
28
28
|
setup(props) {
|
|
29
29
|
const $xeTable = inject('$xeTable', {});
|
|
30
30
|
const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
|
|
31
|
-
const { computeTooltipOpts, computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts } = $xeTable.getComputeMaps();
|
|
31
|
+
const { computeTooltipOpts, computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps();
|
|
32
32
|
const refElem = ref();
|
|
33
33
|
const refFooterScroll = ref();
|
|
34
34
|
const refFooterTable = ref();
|
|
@@ -41,6 +41,7 @@ export default defineComponent({
|
|
|
41
41
|
const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
|
|
42
42
|
const { scrollXLoad, scrollYLoad, overflowX, currentColumn } = tableReactData;
|
|
43
43
|
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
|
|
44
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
44
45
|
const tooltipOpts = computeTooltipOpts.value;
|
|
45
46
|
const resizableOpts = computeResizableOpts.value;
|
|
46
47
|
const { isAllColumnDrag } = resizableOpts;
|
|
@@ -151,7 +152,7 @@ export default defineComponent({
|
|
|
151
152
|
const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
|
|
152
153
|
let isVNPreEmptyStatus = false;
|
|
153
154
|
if (!isMergeCell) {
|
|
154
|
-
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
155
|
+
if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
155
156
|
isVNPreEmptyStatus = true;
|
|
156
157
|
}
|
|
157
158
|
}
|
package/es/table/src/header.js
CHANGED
|
@@ -19,7 +19,7 @@ export default defineComponent({
|
|
|
19
19
|
setup(props) {
|
|
20
20
|
const $xeTable = inject('$xeTable', {});
|
|
21
21
|
const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
|
|
22
|
-
const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
|
|
22
|
+
const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts } = $xeTable.getComputeMaps();
|
|
23
23
|
const headerColumn = ref([]);
|
|
24
24
|
const refElem = ref();
|
|
25
25
|
const refHeaderScroll = ref();
|
|
@@ -38,6 +38,7 @@ export default defineComponent({
|
|
|
38
38
|
const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
|
|
39
39
|
const { currentColumn, dragCol, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
|
|
40
40
|
const { fullColumnIdData, scrollXStore } = tableInternalData;
|
|
41
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
41
42
|
const columnOpts = computeColumnOpts.value;
|
|
42
43
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
43
44
|
const cellOpts = computeCellOpts.value;
|
|
@@ -106,7 +107,7 @@ export default defineComponent({
|
|
|
106
107
|
let isVNPreEmptyStatus = false;
|
|
107
108
|
if (!isGroup) {
|
|
108
109
|
if (!dragCol || dragCol.id !== colid) {
|
|
109
|
-
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
110
|
+
if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
110
111
|
isVNPreEmptyStatus = true;
|
|
111
112
|
}
|
|
112
113
|
}
|
package/es/table/src/table.js
CHANGED
|
@@ -2833,7 +2833,12 @@ export default defineComponent({
|
|
|
2833
2833
|
$xeTable.checkSelectionStatus();
|
|
2834
2834
|
return new Promise(resolve => {
|
|
2835
2835
|
nextTick()
|
|
2836
|
-
.then(() =>
|
|
2836
|
+
.then(() => handleRecalculateLayout(false))
|
|
2837
|
+
.then(() => {
|
|
2838
|
+
calcCellHeight();
|
|
2839
|
+
updateRowOffsetTop();
|
|
2840
|
+
return handleRecalculateLayout(false);
|
|
2841
|
+
})
|
|
2837
2842
|
.then(() => {
|
|
2838
2843
|
let targetScrollLeft = lastScrollLeft;
|
|
2839
2844
|
let targetScrollTop = lastScrollTop;
|
|
@@ -2847,8 +2852,7 @@ export default defineComponent({
|
|
|
2847
2852
|
targetScrollTop = 0;
|
|
2848
2853
|
}
|
|
2849
2854
|
reactData.isRowLoading = false;
|
|
2850
|
-
|
|
2851
|
-
updateRowOffsetTop();
|
|
2855
|
+
handleRecalculateLayout(false);
|
|
2852
2856
|
// 是否变更虚拟滚动
|
|
2853
2857
|
if (oldScrollYLoad === sYLoad) {
|
|
2854
2858
|
restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop)
|
|
@@ -3141,8 +3145,8 @@ export default defineComponent({
|
|
|
3141
3145
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3142
3146
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
3143
3147
|
const result = [];
|
|
3144
|
-
const columnIndex =
|
|
3145
|
-
const $columnIndex =
|
|
3148
|
+
const columnIndex = $xeTable.getColumnIndex(treeNodeColumn);
|
|
3149
|
+
const $columnIndex = $xeTable.getVMColumnIndex(treeNodeColumn);
|
|
3146
3150
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3147
3151
|
let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
|
|
3148
3152
|
if (accordion) {
|
|
@@ -3191,7 +3195,7 @@ export default defineComponent({
|
|
|
3191
3195
|
}
|
|
3192
3196
|
reactData.treeExpandedFlag++;
|
|
3193
3197
|
return Promise.all(result).then(() => {
|
|
3194
|
-
return
|
|
3198
|
+
return $xeTable.recalculate();
|
|
3195
3199
|
});
|
|
3196
3200
|
};
|
|
3197
3201
|
/**
|
|
@@ -3203,14 +3207,14 @@ export default defineComponent({
|
|
|
3203
3207
|
const handleVirtualTreeExpand = (rows, expanded) => {
|
|
3204
3208
|
return handleBaseTreeExpand(rows, expanded).then(() => {
|
|
3205
3209
|
handleVirtualTreeToList();
|
|
3206
|
-
|
|
3210
|
+
$xeTable.handleTableData();
|
|
3207
3211
|
updateAfterDataIndex();
|
|
3208
3212
|
return nextTick();
|
|
3209
3213
|
}).then(() => {
|
|
3210
|
-
return
|
|
3214
|
+
return $xeTable.recalculate(true);
|
|
3211
3215
|
}).then(() => {
|
|
3212
3216
|
setTimeout(() => {
|
|
3213
|
-
|
|
3217
|
+
$xeTable.updateCellAreas();
|
|
3214
3218
|
}, 30);
|
|
3215
3219
|
});
|
|
3216
3220
|
};
|
|
@@ -5401,7 +5405,7 @@ export default defineComponent({
|
|
|
5401
5405
|
internalData.rowExpandedMaps = rowExpandedMaps;
|
|
5402
5406
|
rows = rows.slice(rows.length - 1, rows.length);
|
|
5403
5407
|
}
|
|
5404
|
-
const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex:
|
|
5408
|
+
const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) })) : rows;
|
|
5405
5409
|
if (expanded) {
|
|
5406
5410
|
validRows.forEach((row) => {
|
|
5407
5411
|
const rowid = handleGetRowId(row);
|
|
@@ -6036,7 +6040,7 @@ export default defineComponent({
|
|
|
6036
6040
|
if (getEventTargetNode(evnt, el, 'vxe-cell--filter').flag) {
|
|
6037
6041
|
// 如果点击了筛选按钮
|
|
6038
6042
|
}
|
|
6039
|
-
else if (getEventTargetNode(evnt, tableFilter
|
|
6043
|
+
else if (getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
|
|
6040
6044
|
// 如果点击筛选容器
|
|
6041
6045
|
}
|
|
6042
6046
|
else {
|
|
@@ -8131,6 +8135,10 @@ export default defineComponent({
|
|
|
8131
8135
|
const currentColumnOpts = computeCurrentColumnOpts.value;
|
|
8132
8136
|
const beforeRowMethod = currentColumnOpts.beforeSelectMethod || columnOpts.currentMethod;
|
|
8133
8137
|
const { column: newValue } = params;
|
|
8138
|
+
const { trigger } = currentColumnOpts;
|
|
8139
|
+
if (trigger === 'manual') {
|
|
8140
|
+
return;
|
|
8141
|
+
}
|
|
8134
8142
|
const isChange = oldValue !== newValue;
|
|
8135
8143
|
if (!beforeRowMethod || beforeRowMethod({ column: newValue, $table: $xeTable })) {
|
|
8136
8144
|
$xeTable.setCurrentColumn(newValue);
|
|
@@ -8148,6 +8156,10 @@ export default defineComponent({
|
|
|
8148
8156
|
const currentRowOpts = computeCurrentRowOpts.value;
|
|
8149
8157
|
const beforeRowMethod = currentRowOpts.beforeSelectMethod || rowOpts.currentMethod;
|
|
8150
8158
|
const { row: newValue } = params;
|
|
8159
|
+
const { trigger } = currentRowOpts;
|
|
8160
|
+
if (trigger === 'manual') {
|
|
8161
|
+
return;
|
|
8162
|
+
}
|
|
8151
8163
|
const isChange = oldValue !== newValue;
|
|
8152
8164
|
if (!beforeRowMethod || beforeRowMethod({ row: newValue, $table: $xeTable })) {
|
|
8153
8165
|
$xeTable.setCurrentRow(newValue);
|
|
@@ -8195,10 +8207,10 @@ export default defineComponent({
|
|
|
8195
8207
|
* 展开树节点事件
|
|
8196
8208
|
*/
|
|
8197
8209
|
triggerTreeExpandEvent(evnt, params) {
|
|
8198
|
-
const { treeExpandLazyLoadedMaps } = internalData;
|
|
8210
|
+
const { treeExpandLazyLoadedMaps, treeEATime } = internalData;
|
|
8199
8211
|
const treeOpts = computeTreeOpts.value;
|
|
8200
8212
|
const { row, column } = params;
|
|
8201
|
-
const { lazy, trigger } = treeOpts;
|
|
8213
|
+
const { lazy, trigger, accordion } = treeOpts;
|
|
8202
8214
|
if (trigger === 'manual') {
|
|
8203
8215
|
return;
|
|
8204
8216
|
}
|
|
@@ -8208,7 +8220,17 @@ export default defineComponent({
|
|
|
8208
8220
|
const expanded = !$xeTable.isTreeExpandByRow(row);
|
|
8209
8221
|
const columnIndex = $xeTable.getColumnIndex(column);
|
|
8210
8222
|
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
8211
|
-
|
|
8223
|
+
if (treeEATime) {
|
|
8224
|
+
clearTimeout(treeEATime);
|
|
8225
|
+
}
|
|
8226
|
+
$xeTable.setTreeExpand(row, expanded).then(() => {
|
|
8227
|
+
if (accordion) {
|
|
8228
|
+
internalData.treeEATime = setTimeout(() => {
|
|
8229
|
+
internalData.treeEATime = undefined;
|
|
8230
|
+
$xeTable.scrollToRow(row);
|
|
8231
|
+
}, 30);
|
|
8232
|
+
}
|
|
8233
|
+
});
|
|
8212
8234
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
|
|
8213
8235
|
}
|
|
8214
8236
|
},
|
|
@@ -9458,7 +9480,8 @@ export default defineComponent({
|
|
|
9458
9480
|
if (isScrollXBig && mouseOpts.area) {
|
|
9459
9481
|
errLog('vxe.error.notProp', ['mouse-config.area']);
|
|
9460
9482
|
}
|
|
9461
|
-
|
|
9483
|
+
calcScrollbar();
|
|
9484
|
+
return nextTick().then(() => {
|
|
9462
9485
|
updateStyle();
|
|
9463
9486
|
});
|
|
9464
9487
|
}
|
|
@@ -9555,6 +9578,7 @@ export default defineComponent({
|
|
|
9555
9578
|
if (isScrollYBig && mouseOpts.area) {
|
|
9556
9579
|
errLog('vxe.error.notProp', ['mouse-config.area']);
|
|
9557
9580
|
}
|
|
9581
|
+
calcScrollbar();
|
|
9558
9582
|
return nextTick().then(() => {
|
|
9559
9583
|
updateStyle();
|
|
9560
9584
|
});
|
|
@@ -10434,8 +10458,6 @@ export default defineComponent({
|
|
|
10434
10458
|
if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
|
|
10435
10459
|
initTpImg();
|
|
10436
10460
|
}
|
|
10437
|
-
;
|
|
10438
|
-
window.aa = $xeTable;
|
|
10439
10461
|
nextTick(() => {
|
|
10440
10462
|
const { data, exportConfig, importConfig, treeConfig, showOverflow, highlightCurrentRow, highlightCurrentColumn } = props;
|
|
10441
10463
|
const { scrollXStore, scrollYStore } = internalData;
|
|
@@ -10493,6 +10515,9 @@ export default defineComponent({
|
|
|
10493
10515
|
if (props.highlightHoverColumn) {
|
|
10494
10516
|
warnLog('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover']);
|
|
10495
10517
|
}
|
|
10518
|
+
if (props.resizable) {
|
|
10519
|
+
warnLog('vxe.error.delProp', ['resizable', 'column-config.resizable']);
|
|
10520
|
+
}
|
|
10496
10521
|
// if (props.scrollY) {
|
|
10497
10522
|
// warnLog('vxe.error.delProp', ['scroll-y', 'virtual-y-config'])
|
|
10498
10523
|
// }
|
package/es/table/style.css
CHANGED
|
@@ -1467,9 +1467,11 @@
|
|
|
1467
1467
|
position: absolute;
|
|
1468
1468
|
top: 0;
|
|
1469
1469
|
min-width: 100px;
|
|
1470
|
+
font-size: var(--vxe-ui-font-size-default);
|
|
1470
1471
|
border-radius: var(--vxe-ui-border-radius);
|
|
1471
1472
|
background-color: var(--vxe-ui-layout-background-color);
|
|
1472
1473
|
border: 1px solid var(--vxe-ui-base-popup-border-color);
|
|
1474
|
+
color: var(--vxe-ui-font-color);
|
|
1473
1475
|
box-shadow: var(--vxe-ui-base-popup-box-shadow);
|
|
1474
1476
|
z-index: 10;
|
|
1475
1477
|
}
|
|
@@ -1579,6 +1581,16 @@
|
|
|
1579
1581
|
vertical-align: middle;
|
|
1580
1582
|
}
|
|
1581
1583
|
|
|
1584
|
+
.vxe-table--filter-wrapper.size--medium {
|
|
1585
|
+
font-size: var(--vxe-ui-font-size-medium);
|
|
1586
|
+
}
|
|
1587
|
+
.vxe-table--filter-wrapper.size--small {
|
|
1588
|
+
font-size: var(--vxe-ui-font-size-small);
|
|
1589
|
+
}
|
|
1590
|
+
.vxe-table--filter-wrapper.size--mini {
|
|
1591
|
+
font-size: var(--vxe-ui-font-size-mini);
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1582
1594
|
.vxe-table--context-menu-wrapper {
|
|
1583
1595
|
display: none;
|
|
1584
1596
|
}
|
|
@@ -2997,6 +3009,9 @@
|
|
|
2997
3009
|
user-select: none;
|
|
2998
3010
|
cursor: pointer;
|
|
2999
3011
|
}
|
|
3012
|
+
.vxe-table--render-default .vxe-tree--btn-wrapper > i {
|
|
3013
|
+
background-color: var(--vxe-ui-layout-background-color);
|
|
3014
|
+
}
|
|
3000
3015
|
.vxe-table--render-default .vxe-tree--node-btn {
|
|
3001
3016
|
display: block;
|
|
3002
3017
|
color: var(--vxe-ui-font-lighten-color);
|
|
@@ -3017,6 +3032,9 @@
|
|
|
3017
3032
|
.vxe-table--render-default .vxe-body--column.col--cs-height, .vxe-table--render-default .vxe-body--column.col--rs-height, .vxe-table--render-default .vxe-body--column.col--auto-height {
|
|
3018
3033
|
overflow: hidden;
|
|
3019
3034
|
}
|
|
3035
|
+
.vxe-table--render-default .vxe-body--column.col--cs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--rs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--auto-height.col--tree-node {
|
|
3036
|
+
overflow: unset;
|
|
3037
|
+
}
|
|
3020
3038
|
.vxe-table--render-default .vxe-body--column.col--cs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--rs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--auto-height > .vxe-cell {
|
|
3021
3039
|
overflow: hidden;
|
|
3022
3040
|
}
|