vxe-table 4.19.11 → 4.19.12
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/dist/all.esm.js +215 -212
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/menu/panel.js +2 -2
- package/es/table/src/cell.js +16 -12
- package/es/table/src/columnInfo.js +77 -77
- package/es/table/style.css +18 -6
- 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 -6
- 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 +251 -241
- 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/menu/panel.js +3 -3
- package/lib/table/module/menu/panel.min.js +1 -1
- package/lib/table/src/cell.js +6 -4
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/columnInfo.js +85 -77
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/style/style.css +18 -6
- 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 -6
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/table/module/menu/panel.ts +2 -2
- package/packages/table/src/cell.ts +16 -12
- package/packages/table/src/columnInfo.ts +80 -80
- package/packages/table/src/util.ts +1 -1
- package/styles/components/table.scss +24 -6
- /package/es/{iconfont.1781074420923.ttf → iconfont.1781140839085.ttf} +0 -0
- /package/es/{iconfont.1781074420923.woff → iconfont.1781140839085.woff} +0 -0
- /package/es/{iconfont.1781074420923.woff2 → iconfont.1781140839085.woff2} +0 -0
- /package/lib/{iconfont.1781074420923.ttf → iconfont.1781140839085.ttf} +0 -0
- /package/lib/{iconfont.1781074420923.woff → iconfont.1781140839085.woff} +0 -0
- /package/lib/{iconfont.1781074420923.woff2 → iconfont.1781140839085.woff2} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxe-table",
|
|
3
|
-
"version": "4.19.
|
|
3
|
+
"version": "4.19.12",
|
|
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",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"typescript": "~4.7.4",
|
|
70
70
|
"vue": "3.4.27",
|
|
71
71
|
"vue-router": "~4.5.1",
|
|
72
|
-
"vxe-pc-ui": "4.14.
|
|
72
|
+
"vxe-pc-ui": "4.14.35"
|
|
73
73
|
},
|
|
74
74
|
"vetur": {
|
|
75
75
|
"tags": "helper/vetur/tags.json",
|
|
@@ -35,8 +35,8 @@ export default defineVxeComponent({
|
|
|
35
35
|
const { ctxMenuStore } = tableReactData
|
|
36
36
|
const { computeMenuOpts } = $xeTable.getComputeMaps()
|
|
37
37
|
const menuOpts = computeMenuOpts.value
|
|
38
|
-
const { transfer, destroyOnClose } = menuOpts
|
|
39
|
-
const { visible, list
|
|
38
|
+
const { transfer, destroyOnClose, className } = menuOpts
|
|
39
|
+
const { visible, list } = ctxMenuStore
|
|
40
40
|
|
|
41
41
|
return h(Teleport, {
|
|
42
42
|
to: 'body',
|
|
@@ -996,24 +996,28 @@ export const Cell = {
|
|
|
996
996
|
}
|
|
997
997
|
return renderCellBaseVNs(params, [
|
|
998
998
|
showIcon && (!visibleMethod || visibleMethod(params))
|
|
999
|
-
? h('
|
|
999
|
+
? h('div', {
|
|
1000
1000
|
class: ['vxe-table--expanded', {
|
|
1001
1001
|
'is--active': isActive
|
|
1002
|
-
}]
|
|
1003
|
-
onMousedown (evnt) {
|
|
1004
|
-
evnt.stopPropagation()
|
|
1005
|
-
},
|
|
1006
|
-
onClick (evnt: MouseEvent) {
|
|
1007
|
-
$table.triggerRowExpandEvent(evnt, params)
|
|
1008
|
-
}
|
|
1002
|
+
}]
|
|
1009
1003
|
}, [
|
|
1010
|
-
h('
|
|
1011
|
-
class:
|
|
1012
|
-
|
|
1004
|
+
h('span', {
|
|
1005
|
+
class: 'vxe-table--expand-btn',
|
|
1006
|
+
onMousedown (evnt) {
|
|
1007
|
+
evnt.stopPropagation()
|
|
1008
|
+
},
|
|
1009
|
+
onClick (evnt: MouseEvent) {
|
|
1010
|
+
$table.triggerRowExpandEvent(evnt, params)
|
|
1011
|
+
}
|
|
1012
|
+
}, [
|
|
1013
|
+
h('i', {
|
|
1014
|
+
class: isLazyLoading ? (iconLoaded || getIcon().TABLE_EXPAND_LOADED) : (isActive ? (iconOpen || getIcon().TABLE_EXPAND_OPEN) : (iconClose || getIcon().TABLE_EXPAND_CLOSE))
|
|
1015
|
+
})
|
|
1016
|
+
])
|
|
1013
1017
|
])
|
|
1014
1018
|
: renderEmptyElement($table),
|
|
1015
1019
|
defaultSlot || labelField
|
|
1016
|
-
? h('
|
|
1020
|
+
? h('div', {
|
|
1017
1021
|
class: 'vxe-table--expand-label'
|
|
1018
1022
|
}, defaultSlot ? $table.callSlot(defaultSlot, params) : XEUtils.get(row, labelField as string))
|
|
1019
1023
|
: renderEmptyElement($table)
|
|
@@ -2,43 +2,44 @@ import XEUtils from 'xe-utils'
|
|
|
2
2
|
import { VxeUI } from '../../ui'
|
|
3
3
|
import { toFilters } from './util'
|
|
4
4
|
import { isEnableConf, getFuncText } from '../../ui/src/utils'
|
|
5
|
+
import { isPx } from '../../ui/src/dom'
|
|
5
6
|
import { warnLog, errLog } from '../../ui/src/log'
|
|
6
7
|
|
|
7
|
-
import type { VxeTableConstructor, VxeTablePrivateMethods, VxeTableDefines } from '../../../types'
|
|
8
|
+
import type { VxeTableConstructor, VxeTablePrivateMethods, VxeTableDefines, VxeColumnProps } from '../../../types'
|
|
8
9
|
|
|
9
10
|
const { getI18n, formats, renderer } = VxeUI
|
|
10
11
|
|
|
11
12
|
export class ColumnInfo {
|
|
12
13
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
13
|
-
constructor ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
|
|
14
|
+
constructor ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, colConfs: VxeColumnProps & { renderHeader?: any, renderCell?: any, renderFooter?: any, slots?: any }, { renderHeader, renderCell, renderFooter, renderData }: any = {}) {
|
|
14
15
|
const tableProps = $xeTable.props
|
|
15
16
|
const $xeGrid = $xeTable.xeGrid
|
|
16
17
|
const $xeGantt = $xeTable.xeGantt
|
|
17
18
|
const $xeGGWrapper = $xeGrid || $xeGantt
|
|
18
19
|
|
|
19
|
-
const { field, editRender, filterRender } =
|
|
20
|
+
const { type, field, width, visible, aggFunc, formatter, filterMultiple, cellRender, editRender, filterRender } = colConfs
|
|
20
21
|
|
|
21
|
-
const colId =
|
|
22
|
+
const colId = colConfs.colId || XEUtils.uniqueId('col_')
|
|
22
23
|
|
|
23
|
-
const
|
|
24
|
-
const
|
|
24
|
+
const defaultVisible = XEUtils.isBoolean(visible) ? visible : true
|
|
25
|
+
const defaultRenderWidth = width && isPx(width) && width !== 'auto' ? Math.max(0, XEUtils.toInteger(width)) : 0
|
|
25
26
|
|
|
26
|
-
const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
|
|
27
|
+
const flCompConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
|
|
27
28
|
const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null
|
|
28
29
|
|
|
29
|
-
const filters = toFilters(
|
|
30
|
+
const filters = toFilters(colConfs.filters, colId)
|
|
30
31
|
|
|
31
32
|
const types = ['seq', 'checkbox', 'radio', 'expand', 'html']
|
|
32
|
-
if (
|
|
33
|
-
warnLog('vxe.error.errProp', [`type=${
|
|
33
|
+
if (type && types.indexOf(type) === -1) {
|
|
34
|
+
warnLog('vxe.error.errProp', [`type=${type}`, types.join(', ')])
|
|
34
35
|
}
|
|
35
|
-
if (XEUtils.isBoolean(
|
|
36
|
-
warnLog('vxe.error.errProp', [`column.cell-render=${
|
|
36
|
+
if (XEUtils.isBoolean(cellRender) || (cellRender && !XEUtils.isObject(cellRender))) {
|
|
37
|
+
warnLog('vxe.error.errProp', [`column.cell-render=${cellRender}`, 'column.cell-render={}'])
|
|
37
38
|
}
|
|
38
|
-
if (XEUtils.isBoolean(
|
|
39
|
-
warnLog('vxe.error.errProp', [`column.edit-render=${
|
|
39
|
+
if (XEUtils.isBoolean(editRender) || (editRender && !XEUtils.isObject(editRender))) {
|
|
40
|
+
warnLog('vxe.error.errProp', [`column.edit-render=${editRender}`, 'column.edit-render={}'])
|
|
40
41
|
}
|
|
41
|
-
if (
|
|
42
|
+
if (type === 'expand') {
|
|
42
43
|
const { treeConfig } = tableProps
|
|
43
44
|
const { computeTreeOpts } = $xeTable.getComputeMaps()
|
|
44
45
|
const treeOpts = computeTreeOpts.value
|
|
@@ -59,9 +60,9 @@ export class ColumnInfo {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
if (
|
|
63
|
-
if (!$xeTable.handlePivotTableAggData &&
|
|
64
|
-
errLog('vxe.error.errProp', [`column.agg-func=${
|
|
63
|
+
if (aggFunc) {
|
|
64
|
+
if (!$xeTable.handlePivotTableAggData && aggFunc !== true) {
|
|
65
|
+
errLog('vxe.error.errProp', [`column.agg-func=${aggFunc}`, 'column.agg-func=true'])
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
|
|
@@ -76,74 +77,73 @@ export class ColumnInfo {
|
|
|
76
77
|
|
|
77
78
|
Object.assign(this, {
|
|
78
79
|
// 基本属性
|
|
79
|
-
type:
|
|
80
|
-
property:
|
|
80
|
+
type: colConfs.type,
|
|
81
|
+
property: colConfs.field,
|
|
81
82
|
field: field,
|
|
82
|
-
title:
|
|
83
|
-
width:
|
|
84
|
-
minWidth:
|
|
85
|
-
maxWidth:
|
|
86
|
-
resizable:
|
|
87
|
-
fixed:
|
|
88
|
-
align:
|
|
89
|
-
headerAlign:
|
|
90
|
-
footerAlign:
|
|
91
|
-
showOverflow:
|
|
92
|
-
showHeaderOverflow:
|
|
93
|
-
showFooterOverflow:
|
|
94
|
-
className:
|
|
95
|
-
headerClassName:
|
|
96
|
-
footerClassName:
|
|
83
|
+
title: colConfs.title,
|
|
84
|
+
width: colConfs.width,
|
|
85
|
+
minWidth: colConfs.minWidth,
|
|
86
|
+
maxWidth: colConfs.maxWidth,
|
|
87
|
+
resizable: colConfs.resizable,
|
|
88
|
+
fixed: colConfs.fixed,
|
|
89
|
+
align: colConfs.align,
|
|
90
|
+
headerAlign: colConfs.headerAlign,
|
|
91
|
+
footerAlign: colConfs.footerAlign,
|
|
92
|
+
showOverflow: colConfs.showOverflow,
|
|
93
|
+
showHeaderOverflow: colConfs.showHeaderOverflow,
|
|
94
|
+
showFooterOverflow: colConfs.showFooterOverflow,
|
|
95
|
+
className: colConfs.className,
|
|
96
|
+
headerClassName: colConfs.headerClassName,
|
|
97
|
+
footerClassName: colConfs.footerClassName,
|
|
97
98
|
formatter: formatter,
|
|
98
|
-
headerFormatter:
|
|
99
|
-
footerFormatter:
|
|
100
|
-
padding:
|
|
101
|
-
verticalAlign:
|
|
102
|
-
sortable:
|
|
103
|
-
sortBy:
|
|
104
|
-
sortType:
|
|
99
|
+
headerFormatter: colConfs.headerFormatter,
|
|
100
|
+
footerFormatter: colConfs.footerFormatter,
|
|
101
|
+
padding: colConfs.padding,
|
|
102
|
+
verticalAlign: colConfs.verticalAlign,
|
|
103
|
+
sortable: colConfs.sortable,
|
|
104
|
+
sortBy: colConfs.sortBy,
|
|
105
|
+
sortType: colConfs.sortType,
|
|
105
106
|
filters: filters,
|
|
106
|
-
filterMultiple: XEUtils.isBoolean(
|
|
107
|
-
filterMethod:
|
|
108
|
-
filterResetMethod:
|
|
109
|
-
filterRecoverMethod:
|
|
107
|
+
filterMultiple: XEUtils.isBoolean(filterMultiple) ? filterMultiple : true,
|
|
108
|
+
filterMethod: colConfs.filterMethod,
|
|
109
|
+
filterResetMethod: colConfs.filterResetMethod,
|
|
110
|
+
filterRecoverMethod: colConfs.filterRecoverMethod,
|
|
110
111
|
filterRender: filterRender,
|
|
111
|
-
floatingFilters:
|
|
112
|
-
rules:
|
|
113
|
-
rowGroupNode:
|
|
114
|
-
treeNode:
|
|
115
|
-
dragSort:
|
|
116
|
-
rowResize:
|
|
117
|
-
cellType:
|
|
118
|
-
cellRender:
|
|
112
|
+
floatingFilters: colConfs.floatingFilters,
|
|
113
|
+
rules: colConfs.rules,
|
|
114
|
+
rowGroupNode: colConfs.rowGroupNode,
|
|
115
|
+
treeNode: colConfs.treeNode,
|
|
116
|
+
dragSort: colConfs.dragSort,
|
|
117
|
+
rowResize: colConfs.rowResize,
|
|
118
|
+
cellType: colConfs.cellType,
|
|
119
|
+
cellRender: cellRender,
|
|
119
120
|
editRender: editRender,
|
|
120
|
-
contentRender:
|
|
121
|
-
headerExportMethod:
|
|
122
|
-
exportMethod:
|
|
123
|
-
footerExportMethod:
|
|
124
|
-
titleHelp:
|
|
125
|
-
titlePrefix:
|
|
126
|
-
titleSuffix:
|
|
127
|
-
|
|
128
|
-
aggFunc:
|
|
129
|
-
copyMethod:
|
|
130
|
-
cutMethod:
|
|
131
|
-
pasteMethod:
|
|
121
|
+
contentRender: colConfs.contentRender,
|
|
122
|
+
headerExportMethod: colConfs.headerExportMethod,
|
|
123
|
+
exportMethod: colConfs.exportMethod,
|
|
124
|
+
footerExportMethod: colConfs.footerExportMethod,
|
|
125
|
+
titleHelp: colConfs.titleHelp,
|
|
126
|
+
titlePrefix: colConfs.titlePrefix,
|
|
127
|
+
titleSuffix: colConfs.titleSuffix,
|
|
128
|
+
|
|
129
|
+
aggFunc: colConfs.aggFunc,
|
|
130
|
+
copyMethod: colConfs.copyMethod,
|
|
131
|
+
cutMethod: colConfs.cutMethod,
|
|
132
|
+
pasteMethod: colConfs.pasteMethod,
|
|
132
133
|
|
|
133
134
|
// 自定义参数
|
|
134
|
-
params:
|
|
135
|
+
params: colConfs.params,
|
|
135
136
|
// 渲染属性
|
|
136
137
|
id: colId,
|
|
137
138
|
parentId: null,
|
|
138
|
-
visible,
|
|
139
|
+
visible: defaultVisible,
|
|
139
140
|
// 内部属性(一旦被使用,将导致不可升级版本)
|
|
140
141
|
defaultParentId: null,
|
|
141
142
|
halfVisible: false,
|
|
142
|
-
defaultVisible:
|
|
143
|
-
defaultFixed:
|
|
143
|
+
defaultVisible: defaultVisible,
|
|
144
|
+
defaultFixed: colConfs.fixed,
|
|
144
145
|
|
|
145
|
-
|
|
146
|
-
defaultAggFunc: _vm.aggFunc,
|
|
146
|
+
defaultAggFunc: colConfs.aggFunc,
|
|
147
147
|
|
|
148
148
|
checked: false,
|
|
149
149
|
halfChecked: false,
|
|
@@ -170,7 +170,7 @@ export class ColumnInfo {
|
|
|
170
170
|
renderFixed: '',
|
|
171
171
|
renderVisible: false,
|
|
172
172
|
|
|
173
|
-
renderWidth:
|
|
173
|
+
renderWidth: defaultRenderWidth,
|
|
174
174
|
renderHeight: 0,
|
|
175
175
|
renderResizeWidth: 0,
|
|
176
176
|
renderAutoWidth: 0,
|
|
@@ -179,12 +179,12 @@ export class ColumnInfo {
|
|
|
179
179
|
renderLeft: 0,
|
|
180
180
|
renderArgs: [], // 渲染参数可用于扩展
|
|
181
181
|
model: {},
|
|
182
|
-
renderHeader: renderHeader ||
|
|
183
|
-
renderCell: renderCell ||
|
|
184
|
-
renderFooter: renderFooter ||
|
|
182
|
+
renderHeader: renderHeader || colConfs.renderHeader,
|
|
183
|
+
renderCell: renderCell || colConfs.renderCell,
|
|
184
|
+
renderFooter: renderFooter || colConfs.renderFooter,
|
|
185
185
|
renderData: renderData,
|
|
186
186
|
// 单元格插槽,只对 grid 有效
|
|
187
|
-
slots:
|
|
187
|
+
slots: colConfs.slots
|
|
188
188
|
})
|
|
189
189
|
if (ctFilterOptions && (!filters || !filters.length)) {
|
|
190
190
|
(this as any).filters = toFilters(ctFilterOptions({ $table: $xeTable, column: this as unknown as VxeTableDefines.ColumnInfo }), colId)
|
|
@@ -193,7 +193,7 @@ export class ColumnInfo {
|
|
|
193
193
|
const { computeProxyOpts } = $xeGGWrapper.getComputeMaps()
|
|
194
194
|
const proxyOpts = computeProxyOpts.value
|
|
195
195
|
if (proxyOpts.beforeColumn) {
|
|
196
|
-
proxyOpts.beforeColumn({ $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, column: this })
|
|
196
|
+
proxyOpts.beforeColumn({ $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, column: this as unknown as VxeTableDefines.ColumnInfo })
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -203,8 +203,8 @@ export class ColumnInfo {
|
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
getKey () {
|
|
206
|
-
const { type } = this
|
|
207
|
-
return
|
|
206
|
+
const { type, field } = this
|
|
207
|
+
return field || (type ? `type=${type}` : null)
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
update (name: string, value: any) {
|
|
@@ -725,7 +725,7 @@ function getElementMarginAndWidth (elem: HTMLElement | null) {
|
|
|
725
725
|
return 0
|
|
726
726
|
}
|
|
727
727
|
|
|
728
|
-
export function toFilters (filters: any, colid?: string) {
|
|
728
|
+
export function toFilters (filters: any, colid?: string | number) {
|
|
729
729
|
if (filters) {
|
|
730
730
|
if (XEUtils.isArray(filters)) {
|
|
731
731
|
return filters.map(({ label, value, data, resetValue, checked }) => {
|
|
@@ -2204,6 +2204,16 @@ $btnThemeList: (
|
|
|
2204
2204
|
}
|
|
2205
2205
|
|
|
2206
2206
|
/*展开行*/
|
|
2207
|
+
.vxe-body--column {
|
|
2208
|
+
&.col--expand {
|
|
2209
|
+
& > .vxe-cell {
|
|
2210
|
+
.vxe-cell--wrapper {
|
|
2211
|
+
display: flex;
|
|
2212
|
+
flex-direction: row;
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2207
2217
|
.vxe-table--row-expanded-wrapper {
|
|
2208
2218
|
position: absolute;
|
|
2209
2219
|
top: 0;
|
|
@@ -2237,20 +2247,28 @@ $btnThemeList: (
|
|
|
2237
2247
|
border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
2238
2248
|
}
|
|
2239
2249
|
.vxe-table--expanded {
|
|
2240
|
-
|
|
2250
|
+
display: flex;
|
|
2251
|
+
flex-direction: row;
|
|
2252
|
+
align-items: center;
|
|
2253
|
+
justify-content: center;
|
|
2254
|
+
flex-shrink: 0;
|
|
2241
2255
|
.vxe-table--expand-btn {
|
|
2242
|
-
|
|
2243
|
-
width: 1em;
|
|
2244
|
-
height: 1em;
|
|
2245
|
-
text-align: center;
|
|
2256
|
+
cursor: pointer;
|
|
2246
2257
|
user-select: none;
|
|
2247
2258
|
color: var(--vxe-ui-font-lighten-color);
|
|
2248
|
-
@include baseMixin.createAnimationTransition(transform);
|
|
2249
2259
|
&:hover {
|
|
2250
2260
|
color: var(--vxe-ui-font-color);
|
|
2251
2261
|
}
|
|
2262
|
+
i {
|
|
2263
|
+
display: inline-block;
|
|
2264
|
+
width: 1em;
|
|
2265
|
+
height: 1em;
|
|
2266
|
+
line-height: 1em;
|
|
2267
|
+
@include baseMixin.createAnimationTransition(transform);
|
|
2268
|
+
}
|
|
2252
2269
|
}
|
|
2253
2270
|
&+.vxe-table--expand-label {
|
|
2271
|
+
flex-grow: 1;
|
|
2254
2272
|
padding-left: 0.5em;
|
|
2255
2273
|
}
|
|
2256
2274
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|