vxe-table 3.18.1 → 3.18.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/grid/src/grid.js +5 -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/mixin.js +67 -43
- package/es/table/module/menu/panel.js +10 -8
- package/es/table/src/body.js +12 -14
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/footer.js +7 -5
- package/es/table/src/header.js +67 -28
- package/es/table/src/methods.js +233 -39
- package/es/table/src/props.js +23 -6
- package/es/table/src/table.js +43 -19
- package/es/table/src/util.js +70 -2
- package/es/table/style.css +11 -21
- 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/ui/src/vn.js +16 -11
- package/es/vxe-table/style.css +11 -21
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +6 -0
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +610 -185
- 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/mixin.js +84 -58
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/menu/panel.js +11 -10
- package/lib/table/module/menu/panel.min.js +1 -1
- package/lib/table/src/body.js +11 -13
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +7 -5
- package/lib/table/src/header.js +82 -25
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +259 -42
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +11 -3
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +46 -16
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +74 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +11 -21
- 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/ui/src/vn.js +16 -10
- package/lib/ui/src/vn.min.js +1 -1
- package/lib/vxe-table/style/style.css +11 -21
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/grid/src/grid.ts +5 -1
- package/packages/table/module/menu/mixin.ts +79 -50
- package/packages/table/module/menu/panel.ts +11 -9
- package/packages/table/src/body.ts +11 -13
- package/packages/table/src/column.ts +4 -2
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/footer.ts +11 -9
- package/packages/table/src/header.ts +76 -34
- package/packages/table/src/methods.ts +245 -40
- package/packages/table/src/props.ts +29 -12
- package/packages/table/src/table.ts +53 -16
- package/packages/table/src/util.ts +76 -2
- package/packages/ui/src/vn.ts +16 -11
- package/styles/components/table.scss +33 -56
- /package/es/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
- /package/es/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
- /package/es/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
- /package/lib/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
- /package/lib/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
- /package/lib/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
|
@@ -4,7 +4,7 @@ import { getDomNode, getAbsolutePos, getEventTargetNode } from '../../../ui/src/
|
|
|
4
4
|
import { isEnableConf, hasChildrenList } from '../../../ui/src/utils'
|
|
5
5
|
import { warnLog } from '../../../ui/src/log'
|
|
6
6
|
|
|
7
|
-
import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData } from '../../../../types'
|
|
7
|
+
import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData, TableReactData } from '../../../../types'
|
|
8
8
|
|
|
9
9
|
const { menus, globalEvents, GLOBAL_EVENT_KEYS } = VxeUI
|
|
10
10
|
|
|
@@ -14,17 +14,20 @@ export default {
|
|
|
14
14
|
* 关闭快捷菜单
|
|
15
15
|
*/
|
|
16
16
|
_closeMenu () {
|
|
17
|
-
|
|
17
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
18
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
19
|
+
|
|
20
|
+
Object.assign(reactData.ctxMenuStore, {
|
|
18
21
|
visible: false,
|
|
19
22
|
selected: null,
|
|
20
23
|
selectChild: null,
|
|
21
24
|
showChild: false
|
|
22
25
|
})
|
|
23
|
-
return
|
|
26
|
+
return $xeTable.$nextTick()
|
|
24
27
|
},
|
|
25
28
|
// 处理菜单的移动
|
|
26
29
|
moveCtxMenu (evnt: KeyboardEvent, ctxMenuStore: any, property: 'selectChild' | 'selected', hasOper: boolean, operRest: any, menuList: any[]) {
|
|
27
|
-
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
30
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
28
31
|
|
|
29
32
|
let selectItem
|
|
30
33
|
const selectIndex = XEUtils.findIndexOf(menuList, item => ctxMenuStore[property] === item)
|
|
@@ -59,30 +62,40 @@ export default {
|
|
|
59
62
|
* 快捷菜单事件处理
|
|
60
63
|
*/
|
|
61
64
|
handleGlobalContextmenuEvent (evnt: any) {
|
|
62
|
-
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
65
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
63
66
|
const $xeGrid = $xeTable.$xeGrid
|
|
64
67
|
const $xeGantt = $xeTable.$xeGantt
|
|
68
|
+
const props = $xeTable
|
|
69
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
65
70
|
const internalData = $xeTable as unknown as TableInternalData
|
|
66
71
|
|
|
67
|
-
const {
|
|
68
|
-
|
|
72
|
+
const { xID } = $xeTable
|
|
73
|
+
|
|
74
|
+
const { mouseConfig, menuConfig } = props
|
|
75
|
+
const { editStore, ctxMenuStore } = reactData
|
|
76
|
+
const { visibleColumn } = internalData
|
|
69
77
|
const tableFilter = $xeTable.$refs.refTableFilter
|
|
78
|
+
const tableMenu = $xeTable.$refs.refTableMenu
|
|
79
|
+
const mouseOpts = $xeTable.computeMouseOpts
|
|
80
|
+
const menuOpts = $xeTable.computeMenuOpts
|
|
81
|
+
const el = $xeTable.$refs.refElem as HTMLDivElement
|
|
82
|
+
const { selected } = editStore
|
|
70
83
|
const layoutList = ['header', 'body', 'footer']
|
|
71
|
-
if (isEnableConf(menuConfig)
|
|
72
|
-
if (ctxMenuStore.visible &&
|
|
84
|
+
if (isEnableConf(menuConfig)) {
|
|
85
|
+
if (ctxMenuStore.visible && tableMenu && getEventTargetNode(evnt, (tableMenu as any).$el).flag) {
|
|
73
86
|
evnt.preventDefault()
|
|
74
87
|
return
|
|
75
88
|
}
|
|
76
89
|
if (internalData._keyCtx) {
|
|
77
90
|
const type = 'body'
|
|
78
|
-
const params: any = { type, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, keyboard: true, columns:
|
|
91
|
+
const params: any = { type, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, keyboard: true, columns: visibleColumn.slice(0), $event: evnt }
|
|
79
92
|
// 如果开启单元格区域
|
|
80
93
|
if (mouseConfig && mouseOpts.area) {
|
|
81
|
-
const activeArea =
|
|
94
|
+
const activeArea = $xeTable.getActiveCellArea()
|
|
82
95
|
if (activeArea && activeArea.row && activeArea.column) {
|
|
83
96
|
params.row = activeArea.row
|
|
84
97
|
params.column = activeArea.column
|
|
85
|
-
|
|
98
|
+
$xeTable.handleOpenMenuEvent(evnt, type, params)
|
|
86
99
|
return
|
|
87
100
|
}
|
|
88
101
|
} else if (mouseConfig && mouseOpts.selected) {
|
|
@@ -90,19 +103,19 @@ export default {
|
|
|
90
103
|
if (selected.row && selected.column) {
|
|
91
104
|
params.row = selected.row
|
|
92
105
|
params.column = selected.column
|
|
93
|
-
|
|
106
|
+
$xeTable.handleOpenMenuEvent(evnt, type, params)
|
|
94
107
|
return
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
110
|
}
|
|
98
111
|
// 分别匹配表尾、内容、表尾的快捷菜单
|
|
99
112
|
for (let index = 0; index < layoutList.length; index++) {
|
|
100
|
-
const layout = layoutList[index]
|
|
101
|
-
const columnTargetNode = getEventTargetNode(evnt,
|
|
113
|
+
const layout = layoutList[index] as 'header' | 'body' | 'footer'
|
|
114
|
+
const columnTargetNode = getEventTargetNode(evnt, el, `vxe-${layout}--column`, (target: any) => {
|
|
102
115
|
// target=td|th,直接向上找 table 去匹配即可
|
|
103
|
-
return target.parentNode.parentNode.parentNode.getAttribute('xid') ===
|
|
116
|
+
return target.parentNode.parentNode.parentNode.getAttribute('xid') === xID
|
|
104
117
|
})
|
|
105
|
-
const params: any = { type: layout, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns:
|
|
118
|
+
const params: any = { type: layout, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns: visibleColumn.slice(0), $event: evnt }
|
|
106
119
|
if (columnTargetNode.flag) {
|
|
107
120
|
const cell = columnTargetNode.targetElem
|
|
108
121
|
const columnNodeRest = $xeTable.getColumnNode(cell)
|
|
@@ -121,66 +134,73 @@ export default {
|
|
|
121
134
|
}
|
|
122
135
|
}
|
|
123
136
|
const eventType = `${typePrefix}cell-menu` as 'cell-menu' | 'header-cell-menu' | 'footer-cell-menu'
|
|
124
|
-
|
|
137
|
+
$xeTable.handleOpenMenuEvent(evnt, layout, params)
|
|
125
138
|
// 在 v4 中废弃事件 cell-context-menu、header-cell-context-menu、footer-cell-context-menu
|
|
126
|
-
if (
|
|
139
|
+
if ($xeTable.$listeners[`${typePrefix}cell-context-menu`]) {
|
|
127
140
|
warnLog('vxe.error.delEvent', [`${typePrefix}cell-context-menu`, `${typePrefix}cell-menu`])
|
|
128
141
|
$xeTable.dispatchEvent(`${typePrefix}cell-context-menu` as any, params, evnt)
|
|
129
142
|
} else {
|
|
130
143
|
$xeTable.dispatchEvent(eventType, params, evnt)
|
|
131
144
|
}
|
|
132
145
|
return
|
|
133
|
-
} else if (getEventTargetNode(evnt,
|
|
134
|
-
if (
|
|
146
|
+
} else if (getEventTargetNode(evnt, $xeTable.$el, `vxe-table--${layout}-wrapper`, target => target.getAttribute('xid') === xID).flag) {
|
|
147
|
+
if (menuOpts.trigger === 'cell') {
|
|
135
148
|
evnt.preventDefault()
|
|
136
149
|
} else {
|
|
137
|
-
|
|
150
|
+
$xeTable.handleOpenMenuEvent(evnt, layout, params)
|
|
138
151
|
}
|
|
139
152
|
return
|
|
140
153
|
}
|
|
141
154
|
}
|
|
142
155
|
}
|
|
143
156
|
if (tableFilter && !getEventTargetNode(evnt, (tableFilter as any).$el).flag) {
|
|
144
|
-
|
|
157
|
+
$xeTable.closeFilter()
|
|
145
158
|
}
|
|
146
|
-
|
|
159
|
+
$xeTable.closeMenu()
|
|
147
160
|
},
|
|
148
161
|
/**
|
|
149
162
|
* 显示快捷菜单
|
|
150
163
|
*/
|
|
151
|
-
handleOpenMenuEvent (evnt: any, type:
|
|
152
|
-
const
|
|
153
|
-
const
|
|
154
|
-
const
|
|
164
|
+
handleOpenMenuEvent (evnt: any, type: 'header' | 'body' | 'footer', params: any) {
|
|
165
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
166
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
167
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
168
|
+
|
|
169
|
+
const { ctxMenuStore } = reactData
|
|
170
|
+
const isMenu = $xeTable.computeIsMenu
|
|
171
|
+
const menuOpts = $xeTable.computeMenuOpts
|
|
172
|
+
const config = menuOpts[type]
|
|
173
|
+
const visibleMethod = menuOpts.visibleMethod
|
|
155
174
|
if (config) {
|
|
156
175
|
const { options, disabled } = config
|
|
157
176
|
if (disabled) {
|
|
158
177
|
evnt.preventDefault()
|
|
159
|
-
} else if (
|
|
178
|
+
} else if (isMenu && options && options.length) {
|
|
160
179
|
params.options = options
|
|
161
|
-
|
|
180
|
+
$xeTable.preventEvent(evnt, 'event.showMenu', params, () => {
|
|
162
181
|
if (!visibleMethod || visibleMethod(params)) {
|
|
163
182
|
evnt.preventDefault()
|
|
164
|
-
|
|
183
|
+
$xeTable.updateZindex()
|
|
165
184
|
const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode()
|
|
166
185
|
let top = evnt.clientY + scrollTop
|
|
167
186
|
let left = evnt.clientX + scrollLeft
|
|
168
187
|
const handleVisible = () => {
|
|
188
|
+
internalData._currMenuParams = params
|
|
169
189
|
Object.assign(ctxMenuStore, {
|
|
170
|
-
args: params,
|
|
171
190
|
visible: true,
|
|
172
191
|
list: options,
|
|
173
192
|
selected: null,
|
|
174
193
|
selectChild: null,
|
|
175
194
|
showChild: false,
|
|
176
195
|
style: {
|
|
177
|
-
zIndex:
|
|
196
|
+
zIndex: internalData.tZindex,
|
|
178
197
|
top: `${top}px`,
|
|
179
198
|
left: `${left}px`
|
|
180
199
|
}
|
|
181
200
|
})
|
|
182
|
-
|
|
183
|
-
const
|
|
201
|
+
$xeTable.$nextTick(() => {
|
|
202
|
+
const tableMenu = $xeTable.$refs.refTableMenu
|
|
203
|
+
const ctxElem = (tableMenu as any).$el
|
|
184
204
|
const clientHeight = ctxElem.clientHeight
|
|
185
205
|
const clientWidth = ctxElem.clientWidth
|
|
186
206
|
const { boundingTop, boundingLeft } = getAbsolutePos(ctxElem)
|
|
@@ -196,27 +216,32 @@ export default {
|
|
|
196
216
|
}
|
|
197
217
|
const { keyboard, row, column } = params
|
|
198
218
|
if (keyboard && row && column) {
|
|
199
|
-
|
|
200
|
-
const cell =
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
219
|
+
$xeTable.scrollToRow(row, column).then(() => {
|
|
220
|
+
const cell = $xeTable.getCellElement(row, column)
|
|
221
|
+
if (cell) {
|
|
222
|
+
const { boundingTop, boundingLeft } = getAbsolutePos(cell)
|
|
223
|
+
top = boundingTop + scrollTop + Math.floor(cell.offsetHeight / 2)
|
|
224
|
+
left = boundingLeft + scrollLeft + Math.floor(cell.offsetWidth / 2)
|
|
225
|
+
}
|
|
204
226
|
handleVisible()
|
|
205
227
|
})
|
|
206
228
|
} else {
|
|
207
229
|
handleVisible()
|
|
208
230
|
}
|
|
209
231
|
} else {
|
|
210
|
-
|
|
232
|
+
$xeTable.closeMenu()
|
|
211
233
|
}
|
|
212
234
|
})
|
|
213
235
|
}
|
|
214
236
|
}
|
|
215
|
-
|
|
237
|
+
$xeTable.closeFilter()
|
|
216
238
|
},
|
|
217
239
|
ctxMenuMouseoverEvent (evnt: any, item: any, child: any) {
|
|
240
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
241
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
242
|
+
|
|
218
243
|
const menuElem = evnt.currentTarget
|
|
219
|
-
const ctxMenuStore =
|
|
244
|
+
const { ctxMenuStore } = reactData
|
|
220
245
|
evnt.preventDefault()
|
|
221
246
|
evnt.stopPropagation()
|
|
222
247
|
ctxMenuStore.selected = item
|
|
@@ -224,7 +249,7 @@ export default {
|
|
|
224
249
|
if (!child) {
|
|
225
250
|
ctxMenuStore.showChild = hasChildrenList(item)
|
|
226
251
|
if (ctxMenuStore.showChild) {
|
|
227
|
-
|
|
252
|
+
$xeTable.$nextTick(() => {
|
|
228
253
|
const childWrapperElem = menuElem.nextElementSibling
|
|
229
254
|
if (childWrapperElem) {
|
|
230
255
|
const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(menuElem)
|
|
@@ -254,7 +279,10 @@ export default {
|
|
|
254
279
|
}
|
|
255
280
|
},
|
|
256
281
|
ctxMenuMouseoutEvent (evnt: any, item: any) {
|
|
257
|
-
const
|
|
282
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
283
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
284
|
+
|
|
285
|
+
const { ctxMenuStore } = reactData
|
|
258
286
|
if (!item.children) {
|
|
259
287
|
ctxMenuStore.selected = null
|
|
260
288
|
}
|
|
@@ -264,26 +292,27 @@ export default {
|
|
|
264
292
|
* 快捷菜单点击事件
|
|
265
293
|
*/
|
|
266
294
|
ctxMenuLinkEvent (evnt: any, menu: any) {
|
|
267
|
-
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
295
|
+
const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
|
|
268
296
|
const $xeGrid = $xeTable.$xeGrid
|
|
269
297
|
const $xeGantt = $xeTable.$xeGantt
|
|
298
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
270
299
|
|
|
271
300
|
// 如果一级菜单有配置 code 则允许点击,否则不能点击
|
|
272
301
|
if (!menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
|
|
273
302
|
const gMenuOpts = menus.get(menu.code)
|
|
274
|
-
const params = Object.assign({ menu, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt }
|
|
303
|
+
const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt })
|
|
275
304
|
if (gMenuOpts && gMenuOpts.menuMethod) {
|
|
276
305
|
gMenuOpts.menuMethod(params, evnt)
|
|
277
306
|
}
|
|
278
307
|
// 在 v4 中废弃事件 context-menu-click
|
|
279
|
-
if (
|
|
308
|
+
if ($xeTable.$listeners['context-menu-click']) {
|
|
280
309
|
warnLog('vxe.error.delEvent', ['context-menu-click', 'menu-click'])
|
|
281
310
|
$xeTable.dispatchEvent('context-menu-click' as any, params, evnt)
|
|
282
311
|
} else {
|
|
283
312
|
$xeTable.dispatchEvent('menu-click', params, evnt)
|
|
284
313
|
}
|
|
285
|
-
|
|
314
|
+
$xeTable.closeMenu()
|
|
286
315
|
}
|
|
287
316
|
}
|
|
288
|
-
}
|
|
317
|
+
}
|
|
289
318
|
}
|
|
@@ -2,9 +2,9 @@ import { CreateElement } from 'vue'
|
|
|
2
2
|
import { VxeUI } from '../../../ui'
|
|
3
3
|
import { getFuncText } from '../../../ui/src/utils'
|
|
4
4
|
|
|
5
|
-
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../../types'
|
|
5
|
+
import type { VxeTableConstructor, VxeTablePrivateMethods, TableReactData } from '../../../../types'
|
|
6
6
|
|
|
7
|
-
const { getIcon } = VxeUI
|
|
7
|
+
const { getIcon, renderEmptyElement } = VxeUI
|
|
8
8
|
|
|
9
9
|
export default {
|
|
10
10
|
name: 'VxeTableMenuPanel',
|
|
@@ -23,16 +23,18 @@ export default {
|
|
|
23
23
|
},
|
|
24
24
|
render (this: any, h: CreateElement) {
|
|
25
25
|
const $xeTable = this.$parent as VxeTableConstructor & VxeTablePrivateMethods
|
|
26
|
+
const tableReactData = $xeTable as unknown as TableReactData
|
|
26
27
|
|
|
27
|
-
const {
|
|
28
|
+
const { ctxMenuStore } = tableReactData
|
|
29
|
+
const menuOpts = $xeTable.computeMenuOpts
|
|
28
30
|
return h('div', {
|
|
29
|
-
class: ['vxe-table--context-menu-wrapper',
|
|
31
|
+
class: ['vxe-table--context-menu-wrapper', menuOpts.className, {
|
|
30
32
|
'is--visible': ctxMenuStore.visible
|
|
31
33
|
}],
|
|
32
34
|
style: ctxMenuStore.style
|
|
33
35
|
}, ctxMenuStore.list.map((options: any, gIndex: any) => {
|
|
34
36
|
return options.every((item: any) => item.visible === false)
|
|
35
|
-
?
|
|
37
|
+
? renderEmptyElement($xeTable)
|
|
36
38
|
: h('ul', {
|
|
37
39
|
class: 'vxe-context-menu--option-wrapper',
|
|
38
40
|
key: gIndex
|
|
@@ -70,7 +72,7 @@ export default {
|
|
|
70
72
|
h('i', {
|
|
71
73
|
class: prefixOpts.icon || item.prefixIcon
|
|
72
74
|
}),
|
|
73
|
-
prefixOpts.content ? h('span', {}, `${prefixOpts.content}`) :
|
|
75
|
+
prefixOpts.content ? h('span', {}, `${prefixOpts.content}`) : renderEmptyElement($xeTable)
|
|
74
76
|
]),
|
|
75
77
|
h('span', {
|
|
76
78
|
class: 'vxe-context-menu--link-content',
|
|
@@ -84,7 +86,7 @@ export default {
|
|
|
84
86
|
h('i', {
|
|
85
87
|
class: (suffixOpts.icon || item.suffixIcon) || (hasChildMenus ? getIcon().TABLE_MENU_OPTIONS : '')
|
|
86
88
|
}),
|
|
87
|
-
suffixOpts.content ? h('span', `${suffixOpts.content}`) :
|
|
89
|
+
suffixOpts.content ? h('span', `${suffixOpts.content}`) : renderEmptyElement($xeTable)
|
|
88
90
|
])
|
|
89
91
|
]),
|
|
90
92
|
hasChildMenus
|
|
@@ -125,7 +127,7 @@ export default {
|
|
|
125
127
|
h('i', {
|
|
126
128
|
class: childPrefixOpts.icon || child.prefixIcon
|
|
127
129
|
}),
|
|
128
|
-
childPrefixOpts.content ? h('span', `${childPrefixOpts.content}`) :
|
|
130
|
+
childPrefixOpts.content ? h('span', `${childPrefixOpts.content}`) : renderEmptyElement($xeTable)
|
|
129
131
|
]),
|
|
130
132
|
h('span', {
|
|
131
133
|
class: 'vxe-context-menu--link-content',
|
|
@@ -139,7 +141,7 @@ export default {
|
|
|
139
141
|
h('i', {
|
|
140
142
|
class: childSuffixOpts.icon
|
|
141
143
|
}),
|
|
142
|
-
childSuffixOpts.content ? h('span', `${childSuffixOpts.content}`) :
|
|
144
|
+
childSuffixOpts.content ? h('span', `${childSuffixOpts.content}`) : renderEmptyElement($xeTable)
|
|
143
145
|
])
|
|
144
146
|
])
|
|
145
147
|
])
|
|
@@ -177,14 +177,13 @@ function renderTdColumn (
|
|
|
177
177
|
// hover 进入事件
|
|
178
178
|
if (showTitle || showTooltip || showAllTip || tooltipConfig) {
|
|
179
179
|
tdOns.mouseenter = (evnt: MouseEvent) => {
|
|
180
|
-
if (isVMScrollProcess($xeTable)) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
$xeTable.triggerBodyTooltipEvent(evnt, cellParams)
|
|
180
|
+
if (!isVMScrollProcess($xeTable)) {
|
|
181
|
+
if (showTitle) {
|
|
182
|
+
updateCellTitle(evnt.currentTarget, column)
|
|
183
|
+
} else if (showTooltip || showAllTip) {
|
|
184
|
+
// 如果配置了显示 tooltip
|
|
185
|
+
$xeTable.triggerBodyTooltipEvent(evnt, cellParams)
|
|
186
|
+
}
|
|
188
187
|
}
|
|
189
188
|
$xeTable.dispatchEvent('cell-mouseenter', Object.assign({ cell: evnt.currentTarget }, cellParams), evnt)
|
|
190
189
|
}
|
|
@@ -192,11 +191,10 @@ function renderTdColumn (
|
|
|
192
191
|
// hover 退出事件
|
|
193
192
|
if (showTooltip || showAllTip || tooltipConfig) {
|
|
194
193
|
tdOns.mouseleave = (evnt: MouseEvent) => {
|
|
195
|
-
if (isVMScrollProcess($xeTable)) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
$xeTable.handleTargetLeaveEvent(evnt)
|
|
194
|
+
if (!isVMScrollProcess($xeTable)) {
|
|
195
|
+
if (showTooltip || showAllTip) {
|
|
196
|
+
$xeTable.handleTargetLeaveEvent(evnt)
|
|
197
|
+
}
|
|
200
198
|
}
|
|
201
199
|
$xeTable.dispatchEvent('cell-mouseleave', Object.assign({ cell: evnt.currentTarget }, cellParams), evnt)
|
|
202
200
|
}
|
|
@@ -55,9 +55,11 @@ export const columnProps = {
|
|
|
55
55
|
// 给表尾单元格附加 className
|
|
56
56
|
footerClassName: [String, Function],
|
|
57
57
|
// 格式化显示内容
|
|
58
|
-
formatter: [Function, Array, String]
|
|
58
|
+
formatter: [Function, Array, String] as PropType<VxeColumnPropTypes.Formatter<any>>,
|
|
59
|
+
// 格式化表头显示内容
|
|
60
|
+
headerFormatter: [Function, Array, String] as PropType<VxeColumnPropTypes.HeaderFormatter>,
|
|
59
61
|
// 格式化表尾显示内容
|
|
60
|
-
footerFormatter: [Function, Array, String]
|
|
62
|
+
footerFormatter: [Function, Array, String] as PropType<VxeColumnPropTypes.FooterFormatter>,
|
|
61
63
|
// 是否显示间距
|
|
62
64
|
padding: {
|
|
63
65
|
type: Boolean as PropType<VxeColumnPropTypes.Padding>,
|
|
@@ -93,6 +93,7 @@ export class ColumnInfo {
|
|
|
93
93
|
headerClassName: _vm.headerClassName,
|
|
94
94
|
footerClassName: _vm.footerClassName,
|
|
95
95
|
formatter,
|
|
96
|
+
headerFormatter: _vm.headerFormatter,
|
|
96
97
|
footerFormatter: _vm.footerFormatter,
|
|
97
98
|
padding: _vm.padding,
|
|
98
99
|
verticalAlign: _vm.verticalAlign,
|
|
@@ -34,7 +34,7 @@ function renderRows (h: CreateElement, _vm: any, isOptimizeMode: boolean, tableC
|
|
|
34
34
|
const footerCellOpts = $xeTable.computeFooterCellOpts
|
|
35
35
|
const currCellHeight = getCalcHeight(footerCellOpts.height) || defaultRowHeight
|
|
36
36
|
|
|
37
|
-
return tableColumn.map((column
|
|
37
|
+
return tableColumn.map((column, $columnIndex) => {
|
|
38
38
|
const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column
|
|
39
39
|
const colid = column.id
|
|
40
40
|
const colRest = fullColumnIdData[colid] || {}
|
|
@@ -240,8 +240,8 @@ export default {
|
|
|
240
240
|
default: null
|
|
241
241
|
}
|
|
242
242
|
},
|
|
243
|
-
mounted (
|
|
244
|
-
const _vm = this
|
|
243
|
+
mounted () {
|
|
244
|
+
const _vm = this as any
|
|
245
245
|
const props = _vm
|
|
246
246
|
const $xeTable = _vm.$parent as VxeTableConstructor & VxeTablePrivateMethods
|
|
247
247
|
const tableInternalData = $xeTable as unknown as TableInternalData
|
|
@@ -257,8 +257,9 @@ export default {
|
|
|
257
257
|
elemStore[`${prefix}xSpace`] = _vm.$refs.refFooterXSpace
|
|
258
258
|
},
|
|
259
259
|
destroyed () {
|
|
260
|
-
const
|
|
261
|
-
const
|
|
260
|
+
const _vm = this as any
|
|
261
|
+
const props = _vm
|
|
262
|
+
const $xeTable = _vm.$parent as VxeTableConstructor & VxeTablePrivateMethods
|
|
262
263
|
const tableInternalData = $xeTable as unknown as TableInternalData
|
|
263
264
|
|
|
264
265
|
const { fixedType } = props
|
|
@@ -272,8 +273,9 @@ export default {
|
|
|
272
273
|
elemStore[`${prefix}xSpace`] = null
|
|
273
274
|
},
|
|
274
275
|
render (h: CreateElement) {
|
|
275
|
-
const
|
|
276
|
-
const
|
|
276
|
+
const _vm = this as any
|
|
277
|
+
const props = _vm
|
|
278
|
+
const $xeTable = _vm.$parent as VxeTableConstructor & VxeTablePrivateMethods
|
|
277
279
|
const tableProps = $xeTable
|
|
278
280
|
const tableReactData = $xeTable as unknown as TableReactData
|
|
279
281
|
const tableInternalData = $xeTable as unknown as TableInternalData
|
|
@@ -385,9 +387,9 @@ export default {
|
|
|
385
387
|
*/
|
|
386
388
|
h('tfoot', {
|
|
387
389
|
ref: 'refFooterTFoot'
|
|
388
|
-
}, renderHeads(h,
|
|
390
|
+
}, renderHeads(h, _vm, isOptimizeMode, renderColumnList))
|
|
389
391
|
])
|
|
390
392
|
])
|
|
391
393
|
])
|
|
392
394
|
}
|
|
393
|
-
}
|
|
395
|
+
}
|