vxe-table 3.23.4 → 3.23.6
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/custom/mixin.js +1 -1
- package/es/table/module/filter/mixin.js +71 -56
- package/es/table/module/keyboard/mixin.js +3 -5
- package/es/table/src/body.js +3 -3
- package/es/table/src/footer.js +3 -3
- package/es/table/src/header.js +6 -6
- package/es/table/src/methods.js +128 -68
- package/es/table/src/table.js +10 -2
- package/es/table/src/util.js +6 -5
- package/es/table/style.css +1 -1
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/dom.js +162 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +1 -1
- 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 +321 -134
- 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/custom/mixin.js +1 -1
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +69 -58
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +3 -6
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/body.js +5 -4
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +5 -4
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +10 -8
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +46 -44
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +10 -2
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +6 -5
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +1 -1
- 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/dom.js +167 -0
- package/lib/ui/src/dom.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 +1 -1
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/table/module/custom/mixin.ts +1 -2
- package/packages/table/module/filter/mixin.ts +72 -53
- package/packages/table/module/keyboard/mixin.ts +3 -5
- package/packages/table/src/body.ts +3 -3
- package/packages/table/src/footer.ts +3 -3
- package/packages/table/src/header.ts +6 -6
- package/packages/table/src/methods.ts +166 -80
- package/packages/table/src/table.ts +10 -2
- package/packages/table/src/util.ts +9 -6
- package/packages/ui/src/dom.ts +176 -0
- package/styles/components/table-module/filter.scss +1 -1
- package/styles/theme/base.scss +2 -0
- package/styles/theme/dark.scss +4 -4
- package/styles/theme/light.scss +4 -4
- package/styles/variable.scss +4 -4
- /package/es/{iconfont.1788399048088.ttf → iconfont.1788695175944.ttf} +0 -0
- /package/es/{iconfont.1788399048088.woff → iconfont.1788695175944.woff} +0 -0
- /package/es/{iconfont.1788399048088.woff2 → iconfont.1788695175944.woff2} +0 -0
- /package/lib/{iconfont.1788399048088.ttf → iconfont.1788695175944.ttf} +0 -0
- /package/lib/{iconfont.1788399048088.woff → iconfont.1788695175944.woff} +0 -0
- /package/lib/{iconfont.1788399048088.woff2 → iconfont.1788695175944.woff2} +0 -0
|
@@ -497,7 +497,7 @@ export default {
|
|
|
497
497
|
},
|
|
498
498
|
handleCustomStyle() {
|
|
499
499
|
const $xeTable = this;
|
|
500
|
-
const reactData = $xeTable
|
|
500
|
+
const reactData = $xeTable;
|
|
501
501
|
const { customStore } = reactData;
|
|
502
502
|
if (!customStore.visible) {
|
|
503
503
|
return $xeTable.$nextTick();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../../ui';
|
|
3
3
|
import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
|
|
4
|
-
import { toCssUnit, triggerEvent,
|
|
4
|
+
import { toCssUnit, triggerEvent, updatePanelPlacement } from '../../../ui/src/dom';
|
|
5
5
|
import { isEnableConf } from '../../../ui/src/utils';
|
|
6
6
|
const { renderer } = VxeUI;
|
|
7
7
|
const sourceType = 'table';
|
|
@@ -14,15 +14,12 @@ function updatePopupStyle($xeTable) {
|
|
|
14
14
|
const { filterStore } = reactData;
|
|
15
15
|
const { elemStore } = internalData;
|
|
16
16
|
const { column, targetEl } = filterStore;
|
|
17
|
-
if (!column
|
|
17
|
+
if (!column) {
|
|
18
18
|
return $xeTable.$nextTick();
|
|
19
19
|
}
|
|
20
20
|
const tableEl = $xeTable.$refs.refElem;
|
|
21
|
-
const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode();
|
|
22
21
|
const filterOpts = $xeTable.computeFilterOpts;
|
|
23
22
|
const { maxHeight: customMaxHeight, transfer, zIndex } = filterOpts;
|
|
24
|
-
const currEl = targetEl;
|
|
25
|
-
const tableRect = tableEl.getBoundingClientRect();
|
|
26
23
|
const filterRender = column ? column.filterRender : null;
|
|
27
24
|
const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
28
25
|
const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
|
|
@@ -34,67 +31,86 @@ function updatePopupStyle($xeTable) {
|
|
|
34
31
|
if (!filterWrapperElem) {
|
|
35
32
|
return $xeTable.$nextTick();
|
|
36
33
|
}
|
|
37
|
-
const btnRect = currEl.getBoundingClientRect();
|
|
38
34
|
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
39
35
|
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
40
|
-
const filterWidth = filterWrapperElem.offsetWidth;
|
|
41
|
-
const centerWidth = currEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2);
|
|
42
|
-
let left = 0;
|
|
43
|
-
let top = 0;
|
|
44
|
-
let maxHeight = 0;
|
|
45
36
|
/**
|
|
46
37
|
* 是否显示筛选按钮图标
|
|
47
38
|
* 如果不存在图标,则相对单元格居中显示
|
|
48
39
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
40
|
+
const handleStyle = () => {
|
|
41
|
+
/**
|
|
42
|
+
* 是否显示筛选按钮图标
|
|
43
|
+
* 如果不存在图标,则相对单元格居中显示
|
|
44
|
+
*/
|
|
45
|
+
let currEl = targetEl;
|
|
46
|
+
if (!targetEl) {
|
|
47
|
+
const headerWrapperElem = getRefElem(elemStore[`${column.fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
|
|
48
|
+
const colEl = headerWrapperElem ? headerWrapperElem.querySelector(`.vxe-header--column.${column.id}`) : null;
|
|
49
|
+
if (colEl) {
|
|
50
|
+
currEl = colEl;
|
|
51
|
+
}
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
if (!currEl) {
|
|
54
|
+
return $xeTable.$nextTick();
|
|
58
55
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
left =
|
|
62
|
-
top =
|
|
63
|
-
maxHeight =
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
const btnRect = currEl.getBoundingClientRect();
|
|
57
|
+
const tableRect = tableEl.getBoundingClientRect();
|
|
58
|
+
let left = 0;
|
|
59
|
+
let top = 0;
|
|
60
|
+
let maxHeight = 0;
|
|
61
|
+
let panelStyle = {};
|
|
62
|
+
if (transfer) {
|
|
63
|
+
const ppObj = updatePanelPlacement(currEl, filterWrapperElem, {
|
|
64
|
+
defaultPlacement: 'bottom',
|
|
65
|
+
isMinWidth: false,
|
|
66
|
+
teleportTo: transfer
|
|
67
|
+
});
|
|
68
|
+
panelStyle = ppObj.style;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const filterWidth = filterWrapperElem.offsetWidth;
|
|
72
|
+
const centerWidth = targetEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2);
|
|
73
|
+
maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
|
|
74
|
+
left = btnRect.left - tableRect.left - centerWidth;
|
|
75
|
+
top = btnRect.top - tableRect.top + currEl.clientHeight;
|
|
76
|
+
if (left < 1) {
|
|
77
|
+
left = 1;
|
|
78
|
+
}
|
|
79
|
+
else if (left > (tableEl.clientWidth - filterWidth - 1)) {
|
|
80
|
+
left = tableEl.clientWidth - filterWidth - 1;
|
|
81
|
+
}
|
|
82
|
+
if ($xeGGWrapper) {
|
|
83
|
+
const wrapperEl = $xeGGWrapper.$refs.refElem;
|
|
84
|
+
if (wrapperEl) {
|
|
85
|
+
const wrapperRect = wrapperEl.getBoundingClientRect();
|
|
86
|
+
top += tableRect.top - wrapperRect.top;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
panelStyle = {
|
|
90
|
+
top: toCssUnit(top),
|
|
91
|
+
left: toCssUnit(left)
|
|
92
|
+
};
|
|
66
93
|
}
|
|
67
|
-
|
|
68
|
-
|
|
94
|
+
if (zIndex) {
|
|
95
|
+
panelStyle.zIndex = zIndex;
|
|
69
96
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
97
|
+
filterStore.style = panelStyle;
|
|
98
|
+
// 筛选面板是自适应表格高度
|
|
99
|
+
if (compConf ? !compConf.tableFilterAutoHeight : false) {
|
|
100
|
+
maxHeight = 0;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
if (customMaxHeight) {
|
|
104
|
+
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
|
|
75
105
|
}
|
|
76
106
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
top: toCssUnit(top),
|
|
80
|
-
left: toCssUnit(left)
|
|
107
|
+
// 判断面板不能大于表格高度
|
|
108
|
+
filterStore.maxHeight = maxHeight;
|
|
81
109
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// 筛选面板是自适应表格高度
|
|
87
|
-
if (compConf ? !compConf.tableFilterAutoHeight : false) {
|
|
88
|
-
maxHeight = 0;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
if (customMaxHeight) {
|
|
92
|
-
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// 判断面板不能大于表格高度
|
|
96
|
-
filterStore.maxHeight = maxHeight;
|
|
97
|
-
return $xeTable.$nextTick();
|
|
110
|
+
handleStyle();
|
|
111
|
+
return $xeTable.$nextTick().then(() => {
|
|
112
|
+
handleStyle();
|
|
113
|
+
});
|
|
98
114
|
}
|
|
99
115
|
export default {
|
|
100
116
|
methods: {
|
|
@@ -191,14 +207,13 @@ export default {
|
|
|
191
207
|
filterStore.visible = false;
|
|
192
208
|
}
|
|
193
209
|
else {
|
|
194
|
-
const currEl = btnEl || colEl;
|
|
195
210
|
$xeTable.handleFilterOptions(column);
|
|
196
211
|
internalData._currFilterParams = params;
|
|
197
|
-
filterStore.targetEl =
|
|
212
|
+
filterStore.targetEl = btnEl;
|
|
198
213
|
filterStore.style = null;
|
|
199
214
|
filterStore.visible = true;
|
|
200
215
|
initStore.filter = true;
|
|
201
|
-
$xeTable.$nextTick(() => {
|
|
216
|
+
$xeTable.$nextTick().then(() => {
|
|
202
217
|
updatePopupStyle($xeTable);
|
|
203
218
|
});
|
|
204
219
|
}
|
|
@@ -420,13 +420,11 @@ export default {
|
|
|
420
420
|
// 处理当前列方向键移动
|
|
421
421
|
moveCurrentColumn(isLeftArrow, isRightArrow, evnt) {
|
|
422
422
|
const $xeTable = this;
|
|
423
|
-
const reactData = $xeTable;
|
|
424
423
|
const internalData = $xeTable;
|
|
425
|
-
const {
|
|
426
|
-
const { visibleColumn } = internalData;
|
|
424
|
+
const { currentCol, visibleColumn } = internalData;
|
|
427
425
|
let targetCol = null;
|
|
428
|
-
if (
|
|
429
|
-
const _columnIndex = $xeTable.getVTColumnIndex(
|
|
426
|
+
if (currentCol) {
|
|
427
|
+
const _columnIndex = $xeTable.getVTColumnIndex(currentCol);
|
|
430
428
|
if (isLeftArrow && _columnIndex > 0) {
|
|
431
429
|
targetCol = visibleColumn[_columnIndex - 1];
|
|
432
430
|
}
|
package/es/table/src/body.js
CHANGED
|
@@ -82,8 +82,8 @@ function renderTdColumn(h, $xeTable, seq, rowid, fixedType, isOptimizeMode, rowL
|
|
|
82
82
|
const $xeGrid = $xeTable.$xeGrid;
|
|
83
83
|
const $xeGantt = $xeTable.$xeGantt;
|
|
84
84
|
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
|
|
85
|
-
const { tableData, tableColumn, dragRow, overflowX, overflowY,
|
|
86
|
-
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore, keepUpdateFieldMaps } = tableInternalData;
|
|
85
|
+
const { tableData, tableColumn, dragRow, overflowX, overflowY, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps, currColFlag } = tableReactData;
|
|
86
|
+
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore, keepUpdateFieldMaps, currentCol } = tableInternalData;
|
|
87
87
|
const cellOpts = $xeTable.computeCellOpts;
|
|
88
88
|
const validOpts = $xeTable.computeValidOpts;
|
|
89
89
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
@@ -436,7 +436,7 @@ function renderTdColumn(h, $xeTable, seq, rowid, fixedType, isOptimizeMode, rowL
|
|
|
436
436
|
'col--active': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
|
|
437
437
|
'col--valid-error': !!errorValidItem,
|
|
438
438
|
'show--valid-bg': errorValidItem && validOpts.showErrorBackground,
|
|
439
|
-
'col--current':
|
|
439
|
+
'col--current': currColFlag && currentCol === column
|
|
440
440
|
},
|
|
441
441
|
getClass(compCellClassName, cellParams),
|
|
442
442
|
getClass(className, cellParams),
|
package/es/table/src/footer.js
CHANGED
|
@@ -17,8 +17,8 @@ function renderRows(h, _vm, isOptimizeMode, tableColumn, footerTableData, row, $
|
|
|
17
17
|
const $xeGantt = $xeTable.$xeGantt;
|
|
18
18
|
const { fixedType } = props;
|
|
19
19
|
const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
|
|
20
|
-
const { scrollXLoad, scrollYLoad, overflowX,
|
|
21
|
-
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
|
|
20
|
+
const { scrollXLoad, scrollYLoad, overflowX, mergeFootFlag, currColFlag } = tableReactData;
|
|
21
|
+
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore, currentCol } = tableInternalData;
|
|
22
22
|
const virtualXOpts = $xeTable.computeVirtualXOpts;
|
|
23
23
|
const footerTooltipOpts = $xeTable.computeFooterTooltipOpts;
|
|
24
24
|
const resizableOpts = $xeTable.resizableOpts;
|
|
@@ -155,7 +155,7 @@ function renderRows(h, _vm, isOptimizeMode, tableColumn, footerTableData, row, $
|
|
|
155
155
|
'is--pg-left': isCellPaddingLeft,
|
|
156
156
|
'is--pg-right': isCellPaddingRight,
|
|
157
157
|
'col--ellipsis': hasEllipsis,
|
|
158
|
-
'col--current':
|
|
158
|
+
'col--current': currColFlag && currentCol === column
|
|
159
159
|
}, getClass(footerClassName, cellParams), getClass(footerCellClassName, cellParams)],
|
|
160
160
|
attrs,
|
|
161
161
|
style: footerCellStyle ? (XEUtils.isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle) : undefined,
|
package/es/table/src/header.js
CHANGED
|
@@ -17,8 +17,8 @@ function renderRows(h, _vm, isGroup, isOptimizeMode, headerGroups, _rowIndex, co
|
|
|
17
17
|
const tableInternalData = $xeTable;
|
|
18
18
|
const { fixedType } = props;
|
|
19
19
|
const { resizable: allResizable, columnKey, showCustomHeader, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
|
|
20
|
-
const {
|
|
21
|
-
const { fullColumnIdData, scrollXStore, mergeHeaderList, mergeHeaderCellMaps } = tableInternalData;
|
|
20
|
+
const { dragCol, scrollXLoad, scrollYLoad, overflowX, mergeHeadFlag, tableColumn, currColFlag } = tableReactData;
|
|
21
|
+
const { fullColumnIdData, scrollXStore, mergeHeaderList, mergeHeaderCellMaps, currentCol } = tableInternalData;
|
|
22
22
|
const virtualXOpts = $xeTable.computeVirtualXOpts;
|
|
23
23
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
24
24
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
@@ -172,7 +172,7 @@ function renderRows(h, _vm, isGroup, isOptimizeMode, headerGroups, _rowIndex, co
|
|
|
172
172
|
'is--filter-active': hasFilter,
|
|
173
173
|
'is--drag-active': columnOpts.drag && !column.fixed && !isDisabledDrag && (isCrossDrag || isPeerDrag || !column.parentId),
|
|
174
174
|
'is--drag-disabled': columnOpts.drag && isDisabledDrag,
|
|
175
|
-
'col--current':
|
|
175
|
+
'col--current': currColFlag && currentCol === column
|
|
176
176
|
}, getClass(headerClassName, cellParams), getClass(headerCellClassName, cellParams)],
|
|
177
177
|
attrs: thAttrs,
|
|
178
178
|
style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle) : undefined,
|
|
@@ -221,8 +221,8 @@ function renderFilterRows(h, _vm, isOptimizeMode, cols) {
|
|
|
221
221
|
const tableInternalData = $xeTable;
|
|
222
222
|
const { fixedType } = props;
|
|
223
223
|
const { showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign } = tableProps;
|
|
224
|
-
const {
|
|
225
|
-
const { fullColumnIdData } = tableInternalData;
|
|
224
|
+
const { overflowX, currColFlag } = tableReactData;
|
|
225
|
+
const { fullColumnIdData, currentCol } = tableInternalData;
|
|
226
226
|
const headerTooltipOpts = $xeTable.computeHeaderTooltipOpts;
|
|
227
227
|
const cellOpts = $xeTable.computeCellOpts;
|
|
228
228
|
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
@@ -292,7 +292,7 @@ function renderFilterRows(h, _vm, isOptimizeMode, cols) {
|
|
|
292
292
|
'fixed--width': !isAutoCellWidth,
|
|
293
293
|
'is--padding': isPadding,
|
|
294
294
|
'is--sortable': column.sortable,
|
|
295
|
-
'col--current':
|
|
295
|
+
'col--current': currColFlag && currentCol === column
|
|
296
296
|
}
|
|
297
297
|
],
|
|
298
298
|
key: colid,
|