vxe-table 3.23.5 → 3.23.7
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/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 +320 -133
- 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/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/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.1788403274136.ttf → iconfont.1788696064361.ttf} +0 -0
- /package/es/{iconfont.1788403274136.woff → iconfont.1788696064361.woff} +0 -0
- /package/es/{iconfont.1788403274136.woff2 → iconfont.1788696064361.woff2} +0 -0
- /package/lib/{iconfont.1788403274136.ttf → iconfont.1788696064361.ttf} +0 -0
- /package/lib/{iconfont.1788403274136.woff → iconfont.1788696064361.woff} +0 -0
- /package/lib/{iconfont.1788403274136.woff2 → iconfont.1788696064361.woff2} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxe-table",
|
|
3
|
-
"version": "3.23.
|
|
3
|
+
"version": "3.23.7",
|
|
4
4
|
"description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"update": "npm install --legacy-peer-deps",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"vue-i18n": "^8.15.1",
|
|
66
66
|
"vue-router": "^3.5.1",
|
|
67
67
|
"vue-template-compiler": "2.6.14",
|
|
68
|
-
"vxe-pc-ui": "3.
|
|
68
|
+
"vxe-pc-ui": "3.18.2"
|
|
69
69
|
},
|
|
70
70
|
"vetur": {
|
|
71
71
|
"tags": "helper/vetur/tags.json",
|
|
@@ -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
|
|
|
7
7
|
import type { VxeTableConstructor, VxeTableDefines, TableReactData, TableInternalData, VxeColumnPropTypes, VxeTablePrivateMethods } from '../../../../types'
|
|
@@ -20,15 +20,12 @@ function updatePopupStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
|
|
|
20
20
|
const { filterStore } = reactData
|
|
21
21
|
const { elemStore } = internalData
|
|
22
22
|
const { column, targetEl } = filterStore
|
|
23
|
-
if (!column
|
|
23
|
+
if (!column) {
|
|
24
24
|
return $xeTable.$nextTick()
|
|
25
25
|
}
|
|
26
26
|
const tableEl = $xeTable.$refs.refElem as HTMLDivElement
|
|
27
|
-
const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode()
|
|
28
27
|
const filterOpts = $xeTable.computeFilterOpts
|
|
29
28
|
const { maxHeight: customMaxHeight, transfer, zIndex } = filterOpts
|
|
30
|
-
const currEl = targetEl
|
|
31
|
-
const tableRect = tableEl.getBoundingClientRect()
|
|
32
29
|
const filterRender = column ? column.filterRender : null
|
|
33
30
|
const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
|
|
34
31
|
|
|
@@ -41,63 +38,86 @@ function updatePopupStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
|
|
|
41
38
|
if (!filterWrapperElem) {
|
|
42
39
|
return $xeTable.$nextTick()
|
|
43
40
|
}
|
|
44
|
-
const btnRect = currEl.getBoundingClientRect()
|
|
45
41
|
const filterHeadElem = filterWrapperElem.querySelector<HTMLDivElement>('.vxe-table--filter-header')
|
|
46
42
|
const filterFootElem = filterWrapperElem.querySelector<HTMLDivElement>('.vxe-table--filter-footer')
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 是否显示筛选按钮图标
|
|
46
|
+
* 如果不存在图标,则相对单元格居中显示
|
|
47
|
+
*/
|
|
48
|
+
const handleStyle = () => {
|
|
52
49
|
/**
|
|
53
50
|
* 是否显示筛选按钮图标
|
|
54
51
|
* 如果不存在图标,则相对单元格居中显示
|
|
55
52
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
left = visibleWidth - filterWidth - 16
|
|
53
|
+
let currEl = targetEl
|
|
54
|
+
if (!targetEl) {
|
|
55
|
+
const headerWrapperElem = getRefElem(elemStore[`${column.fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper'])
|
|
56
|
+
const colEl = headerWrapperElem ? headerWrapperElem.querySelector<HTMLDivElement>(`.vxe-header--column.${column.id}`) : null
|
|
57
|
+
if (colEl) {
|
|
58
|
+
currEl = colEl
|
|
59
|
+
}
|
|
64
60
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
top = btnRect.top - tableRect.top + currEl.clientHeight
|
|
68
|
-
maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14)
|
|
69
|
-
if (left < 1) {
|
|
70
|
-
left = 1
|
|
71
|
-
} else if (left > (tableEl.clientWidth - filterWidth - 1)) {
|
|
72
|
-
left = tableEl.clientWidth - filterWidth - 1
|
|
61
|
+
if (!currEl) {
|
|
62
|
+
return $xeTable.$nextTick()
|
|
73
63
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
64
|
+
|
|
65
|
+
const btnRect = currEl.getBoundingClientRect()
|
|
66
|
+
const tableRect = tableEl.getBoundingClientRect()
|
|
67
|
+
let left = 0
|
|
68
|
+
let top = 0
|
|
69
|
+
let maxHeight = 0
|
|
70
|
+
let panelStyle: Record<string, string | number> = {}
|
|
71
|
+
if (transfer) {
|
|
72
|
+
const ppObj = updatePanelPlacement(currEl, filterWrapperElem, {
|
|
73
|
+
defaultPlacement: 'bottom',
|
|
74
|
+
isMinWidth: false,
|
|
75
|
+
teleportTo: transfer
|
|
76
|
+
})
|
|
77
|
+
panelStyle = ppObj.style
|
|
78
|
+
} else {
|
|
79
|
+
const filterWidth = filterWrapperElem.offsetWidth
|
|
80
|
+
const centerWidth = targetEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2)
|
|
81
|
+
maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14)
|
|
82
|
+
left = btnRect.left - tableRect.left - centerWidth
|
|
83
|
+
top = btnRect.top - tableRect.top + currEl.clientHeight
|
|
84
|
+
if (left < 1) {
|
|
85
|
+
left = 1
|
|
86
|
+
} else if (left > (tableEl.clientWidth - filterWidth - 1)) {
|
|
87
|
+
left = tableEl.clientWidth - filterWidth - 1
|
|
88
|
+
}
|
|
89
|
+
if ($xeGGWrapper) {
|
|
90
|
+
const wrapperEl = $xeGGWrapper.$refs.refElem as HTMLDivElement
|
|
91
|
+
if (wrapperEl) {
|
|
92
|
+
const wrapperRect = wrapperEl.getBoundingClientRect()
|
|
93
|
+
top += tableRect.top - wrapperRect.top
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
panelStyle = {
|
|
97
|
+
top: toCssUnit(top),
|
|
98
|
+
left: toCssUnit(left)
|
|
79
99
|
}
|
|
80
100
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
} else {
|
|
94
|
-
if (customMaxHeight) {
|
|
95
|
-
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight
|
|
101
|
+
|
|
102
|
+
if (zIndex) {
|
|
103
|
+
panelStyle.zIndex = zIndex
|
|
104
|
+
}
|
|
105
|
+
filterStore.style = panelStyle
|
|
106
|
+
// 筛选面板是自适应表格高度
|
|
107
|
+
if (compConf ? !compConf.tableFilterAutoHeight : false) {
|
|
108
|
+
maxHeight = 0
|
|
109
|
+
} else {
|
|
110
|
+
if (customMaxHeight) {
|
|
111
|
+
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight
|
|
112
|
+
}
|
|
96
113
|
}
|
|
114
|
+
// 判断面板不能大于表格高度
|
|
115
|
+
filterStore.maxHeight = maxHeight
|
|
97
116
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
117
|
+
handleStyle()
|
|
118
|
+
return $xeTable.$nextTick().then(() => {
|
|
119
|
+
handleStyle()
|
|
120
|
+
})
|
|
101
121
|
}
|
|
102
122
|
|
|
103
123
|
export default {
|
|
@@ -196,14 +216,13 @@ export default {
|
|
|
196
216
|
if (filterStore.column === column && filterStore.visible) {
|
|
197
217
|
filterStore.visible = false
|
|
198
218
|
} else {
|
|
199
|
-
const currEl = btnEl || colEl
|
|
200
219
|
$xeTable.handleFilterOptions(column)
|
|
201
220
|
internalData._currFilterParams = params
|
|
202
|
-
filterStore.targetEl =
|
|
221
|
+
filterStore.targetEl = btnEl
|
|
203
222
|
filterStore.style = null
|
|
204
223
|
filterStore.visible = true
|
|
205
224
|
initStore.filter = true
|
|
206
|
-
$xeTable.$nextTick(() => {
|
|
225
|
+
$xeTable.$nextTick().then(() => {
|
|
207
226
|
updatePopupStyle($xeTable)
|
|
208
227
|
})
|
|
209
228
|
}
|
|
@@ -403,14 +403,12 @@ export default {
|
|
|
403
403
|
// 处理当前列方向键移动
|
|
404
404
|
moveCurrentColumn (isLeftArrow: boolean, isRightArrow: boolean, evnt: any) {
|
|
405
405
|
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
406
|
-
const reactData = $xeTable as unknown as TableReactData
|
|
407
406
|
const internalData = $xeTable as unknown as TableInternalData
|
|
408
407
|
|
|
409
|
-
const {
|
|
410
|
-
const { visibleColumn } = internalData
|
|
408
|
+
const { currentCol, visibleColumn } = internalData
|
|
411
409
|
let targetCol: VxeTableDefines.ColumnInfo | null = null
|
|
412
|
-
if (
|
|
413
|
-
const _columnIndex = $xeTable.getVTColumnIndex(
|
|
410
|
+
if (currentCol) {
|
|
411
|
+
const _columnIndex = $xeTable.getVTColumnIndex(currentCol)
|
|
414
412
|
if (isLeftArrow && _columnIndex > 0) {
|
|
415
413
|
targetCol = visibleColumn[_columnIndex - 1]
|
|
416
414
|
} else if (isRightArrow && _columnIndex < visibleColumn.length - 1) {
|
|
@@ -108,8 +108,8 @@ function renderTdColumn (
|
|
|
108
108
|
const $xeGantt = $xeTable.$xeGantt
|
|
109
109
|
|
|
110
110
|
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps
|
|
111
|
-
const { tableData, tableColumn, dragRow, overflowX, overflowY,
|
|
112
|
-
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore, keepUpdateFieldMaps } = tableInternalData
|
|
111
|
+
const { tableData, tableColumn, dragRow, overflowX, overflowY, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps, currColFlag } = tableReactData
|
|
112
|
+
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore, keepUpdateFieldMaps, currentCol } = tableInternalData
|
|
113
113
|
const cellOpts = $xeTable.computeCellOpts
|
|
114
114
|
const validOpts = $xeTable.computeValidOpts
|
|
115
115
|
const checkboxOpts = $xeTable.computeCheckboxOpts
|
|
@@ -483,7 +483,7 @@ function renderTdColumn (
|
|
|
483
483
|
'col--active': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
|
|
484
484
|
'col--valid-error': !!errorValidItem,
|
|
485
485
|
'show--valid-bg': errorValidItem && validOpts.showErrorBackground,
|
|
486
|
-
'col--current':
|
|
486
|
+
'col--current': currColFlag && currentCol === column
|
|
487
487
|
},
|
|
488
488
|
getClass(compCellClassName, cellParams),
|
|
489
489
|
getClass(className, cellParams),
|
|
@@ -24,8 +24,8 @@ function renderRows (h: CreateElement, _vm: any, isOptimizeMode: boolean, tableC
|
|
|
24
24
|
|
|
25
25
|
const { fixedType } = props
|
|
26
26
|
const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps
|
|
27
|
-
const { scrollXLoad, scrollYLoad, overflowX,
|
|
28
|
-
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData
|
|
27
|
+
const { scrollXLoad, scrollYLoad, overflowX, mergeFootFlag, currColFlag } = tableReactData
|
|
28
|
+
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore, currentCol } = tableInternalData
|
|
29
29
|
const virtualXOpts = $xeTable.computeVirtualXOpts
|
|
30
30
|
const footerTooltipOpts = $xeTable.computeFooterTooltipOpts
|
|
31
31
|
const resizableOpts = $xeTable.resizableOpts
|
|
@@ -167,7 +167,7 @@ function renderRows (h: CreateElement, _vm: any, isOptimizeMode: boolean, tableC
|
|
|
167
167
|
'is--pg-left': isCellPaddingLeft,
|
|
168
168
|
'is--pg-right': isCellPaddingRight,
|
|
169
169
|
'col--ellipsis': hasEllipsis,
|
|
170
|
-
'col--current':
|
|
170
|
+
'col--current': currColFlag && currentCol === column
|
|
171
171
|
}, getClass(footerClassName, cellParams), getClass(footerCellClassName, cellParams)],
|
|
172
172
|
attrs,
|
|
173
173
|
style: footerCellStyle ? (XEUtils.isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle) as VxeComponentStyleType : undefined,
|
|
@@ -24,8 +24,8 @@ function renderRows (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMod
|
|
|
24
24
|
|
|
25
25
|
const { fixedType } = props
|
|
26
26
|
const { resizable: allResizable, columnKey, showCustomHeader, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps
|
|
27
|
-
const {
|
|
28
|
-
const { fullColumnIdData, scrollXStore, mergeHeaderList, mergeHeaderCellMaps } = tableInternalData
|
|
27
|
+
const { dragCol, scrollXLoad, scrollYLoad, overflowX, mergeHeadFlag, tableColumn, currColFlag } = tableReactData
|
|
28
|
+
const { fullColumnIdData, scrollXStore, mergeHeaderList, mergeHeaderCellMaps, currentCol } = tableInternalData
|
|
29
29
|
const virtualXOpts = $xeTable.computeVirtualXOpts
|
|
30
30
|
const columnOpts = $xeTable.computeColumnOpts
|
|
31
31
|
const columnDragOpts = $xeTable.computeColumnDragOpts
|
|
@@ -186,7 +186,7 @@ function renderRows (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMod
|
|
|
186
186
|
'is--filter-active': hasFilter,
|
|
187
187
|
'is--drag-active': columnOpts.drag && !column.fixed && !isDisabledDrag && (isCrossDrag || isPeerDrag || !column.parentId),
|
|
188
188
|
'is--drag-disabled': columnOpts.drag && isDisabledDrag,
|
|
189
|
-
'col--current':
|
|
189
|
+
'col--current': currColFlag && currentCol === column
|
|
190
190
|
}, getClass(headerClassName, cellParams), getClass(headerCellClassName, cellParams)],
|
|
191
191
|
attrs: thAttrs,
|
|
192
192
|
style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle) as VxeComponentStyleType : undefined,
|
|
@@ -237,8 +237,8 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
|
|
|
237
237
|
|
|
238
238
|
const { fixedType } = props
|
|
239
239
|
const { showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign } = tableProps
|
|
240
|
-
const {
|
|
241
|
-
const { fullColumnIdData } = tableInternalData
|
|
240
|
+
const { overflowX, currColFlag } = tableReactData
|
|
241
|
+
const { fullColumnIdData, currentCol } = tableInternalData
|
|
242
242
|
const headerTooltipOpts = $xeTable.computeHeaderTooltipOpts
|
|
243
243
|
const cellOpts = $xeTable.computeCellOpts
|
|
244
244
|
const defaultRowHeight = $xeTable.computeDefaultRowHeight
|
|
@@ -313,7 +313,7 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
|
|
|
313
313
|
'fixed--width': !isAutoCellWidth,
|
|
314
314
|
'is--padding': isPadding,
|
|
315
315
|
'is--sortable': column.sortable,
|
|
316
|
-
'col--current':
|
|
316
|
+
'col--current': currColFlag && currentCol === column
|
|
317
317
|
}
|
|
318
318
|
],
|
|
319
319
|
key: colid,
|