vxe-table 3.18.2 → 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.
Files changed (52) hide show
  1. package/es/grid/src/grid.js +5 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/menu/mixin.js +67 -43
  7. package/es/table/module/menu/panel.js +10 -8
  8. package/es/table/src/body.js +12 -14
  9. package/es/table/style.css +0 -4
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/ui/src/vn.js +16 -11
  14. package/es/vxe-table/style.css +0 -4
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/grid/src/grid.js +6 -0
  17. package/lib/grid/src/grid.min.js +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +130 -93
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/table/module/menu/mixin.js +84 -58
  25. package/lib/table/module/menu/mixin.min.js +1 -1
  26. package/lib/table/module/menu/panel.js +11 -10
  27. package/lib/table/module/menu/panel.min.js +1 -1
  28. package/lib/table/src/body.js +11 -13
  29. package/lib/table/src/body.min.js +1 -1
  30. package/lib/table/style/style.css +0 -4
  31. package/lib/table/style/style.min.css +1 -1
  32. package/lib/ui/index.js +1 -1
  33. package/lib/ui/index.min.js +1 -1
  34. package/lib/ui/src/log.js +1 -1
  35. package/lib/ui/src/log.min.js +1 -1
  36. package/lib/ui/src/vn.js +16 -10
  37. package/lib/ui/src/vn.min.js +1 -1
  38. package/lib/vxe-table/style/style.css +0 -4
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +1 -1
  41. package/packages/grid/src/grid.ts +5 -1
  42. package/packages/table/module/menu/mixin.ts +79 -50
  43. package/packages/table/module/menu/panel.ts +11 -9
  44. package/packages/table/src/body.ts +11 -13
  45. package/packages/ui/src/vn.ts +16 -11
  46. package/styles/components/table.scss +0 -1
  47. /package/es/{iconfont.1756452257212.ttf → iconfont.1756629700380.ttf} +0 -0
  48. /package/es/{iconfont.1756452257212.woff → iconfont.1756629700380.woff} +0 -0
  49. /package/es/{iconfont.1756452257212.woff2 → iconfont.1756629700380.woff2} +0 -0
  50. /package/lib/{iconfont.1756452257212.ttf → iconfont.1756629700380.ttf} +0 -0
  51. /package/lib/{iconfont.1756452257212.woff → iconfont.1756629700380.woff} +0 -0
  52. /package/lib/{iconfont.1756452257212.woff2 → iconfont.1756629700380.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.18.2",
3
+ "version": "3.18.3",
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",
@@ -487,12 +487,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
487
487
  if (field) {
488
488
  let itemValue: any = null
489
489
  if (itemRender) {
490
- const { defaultValue } = itemRender
490
+ const { startField, endField, defaultValue } = itemRender
491
491
  if (XEUtils.isFunction(defaultValue)) {
492
492
  itemValue = defaultValue({ item })
493
493
  } else if (!XEUtils.isUndefined(defaultValue)) {
494
494
  itemValue = defaultValue
495
495
  }
496
+ if (startField && endField) {
497
+ XEUtils.set(fData, startField, null)
498
+ XEUtils.set(fData, endField, null)
499
+ }
496
500
  }
497
501
  fData[field] = itemValue
498
502
  }
@@ -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
- Object.assign(this.ctxMenuStore, {
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 this.$nextTick()
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 { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this
68
- const { selected } = editStore
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) || contextMenu) {
72
- if (ctxMenuStore.visible && $refs.refTableMenu && getEventTargetNode(evnt, $refs.refTableMenu.$el).flag) {
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: this.visibleColumn.slice(0), $event: evnt }
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 = this.getActiveCellArea()
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
- this.handleOpenMenuEvent(evnt, type, params)
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
- this.handleOpenMenuEvent(evnt, type, params)
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, this.$el, `vxe-${layout}--column`, (target: any) => {
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') === tId
116
+ return target.parentNode.parentNode.parentNode.getAttribute('xid') === xID
104
117
  })
105
- const params: any = { type: layout, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns: this.visibleColumn.slice(0), $event: evnt }
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
- this.handleOpenMenuEvent(evnt, layout, params)
137
+ $xeTable.handleOpenMenuEvent(evnt, layout, params)
125
138
  // 在 v4 中废弃事件 cell-context-menu、header-cell-context-menu、footer-cell-context-menu
126
- if (this.$listeners[`${typePrefix}cell-context-menu`]) {
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, this.$el, `vxe-table--${layout}-wrapper`, target => target.getAttribute('xid') === tId).flag) {
134
- if (ctxMenuOpts.trigger === 'cell') {
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
- this.handleOpenMenuEvent(evnt, layout, params)
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
- this.closeFilter()
157
+ $xeTable.closeFilter()
145
158
  }
146
- this.closeMenu()
159
+ $xeTable.closeMenu()
147
160
  },
148
161
  /**
149
162
  * 显示快捷菜单
150
163
  */
151
- handleOpenMenuEvent (evnt: any, type: any, params: any) {
152
- const { isCtxMenu, ctxMenuStore, ctxMenuOpts } = this
153
- const config = ctxMenuOpts[type]
154
- const visibleMethod = ctxMenuOpts.visibleMethod
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 (isCtxMenu && options && options.length) {
178
+ } else if (isMenu && options && options.length) {
160
179
  params.options = options
161
- this.preventEvent(evnt, 'event.showMenu', params, () => {
180
+ $xeTable.preventEvent(evnt, 'event.showMenu', params, () => {
162
181
  if (!visibleMethod || visibleMethod(params)) {
163
182
  evnt.preventDefault()
164
- this.updateZindex()
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: this.tZindex,
196
+ zIndex: internalData.tZindex,
178
197
  top: `${top}px`,
179
198
  left: `${left}px`
180
199
  }
181
200
  })
182
- this.$nextTick(() => {
183
- const ctxElem = this.$refs.refTableMenu.$el
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
- this.scrollToRow(row, column).then(() => {
200
- const cell = this.getCellElement(row, column)
201
- const { boundingTop, boundingLeft } = getAbsolutePos(cell)
202
- top = boundingTop + scrollTop + Math.floor(cell.offsetHeight / 2)
203
- left = boundingLeft + scrollLeft + Math.floor(cell.offsetWidth / 2)
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
- this.closeMenu()
232
+ $xeTable.closeMenu()
211
233
  }
212
234
  })
213
235
  }
214
236
  }
215
- this.closeFilter()
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 = this.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
- this.$nextTick(() => {
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 ctxMenuStore = this.ctxMenuStore
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 }, this.ctxMenuStore.args)
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 (this.$listeners['context-menu-click']) {
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
- this.closeMenu()
314
+ $xeTable.closeMenu()
286
315
  }
287
316
  }
288
- } as any
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 { _e, ctxMenuOpts, ctxMenuStore } = this
28
+ const { ctxMenuStore } = tableReactData
29
+ const menuOpts = $xeTable.computeMenuOpts
28
30
  return h('div', {
29
- class: ['vxe-table--context-menu-wrapper', ctxMenuOpts.className, {
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
- ? _e()
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}`) : _e()
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}`) : _e()
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}`) : _e()
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}`) : _e()
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
- return
182
- }
183
- if (showTitle) {
184
- updateCellTitle(evnt.currentTarget, column)
185
- } else if (showTooltip || showAllTip) {
186
- // 如果配置了显示 tooltip
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
- return
197
- }
198
- if (showTooltip || showAllTip) {
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
  }
@@ -6,26 +6,31 @@ export function getOnName (type: string) {
6
6
  return XEUtils.kebabCase(type)
7
7
  }
8
8
 
9
- export function getModelEvent (renderOpts: any) {
10
- switch (renderOpts.name) {
11
- case 'input':
12
- case 'textarea':
13
- return 'input'
9
+ export function getModelEvent (name: string) {
10
+ switch (name) {
11
+ case 'VxeInput':
12
+ case 'VxeTextarea':
13
+ case 'VxeNumberInput':
14
+ case 'VxeSelect':
15
+ case 'VxeTreeSelect':
16
+ case 'VxeTableSelect':
17
+ case 'VxeDatePicker':
18
+ case 'VxeDateRangePicker':
19
+ return 'modelValue'
14
20
  case 'select':
15
21
  return 'change'
16
22
  }
17
- return 'modelValue'
23
+ return 'input'
18
24
  }
19
25
 
20
- export function getChangeEvent (renderOpts: any) {
21
- switch (renderOpts.name) {
26
+ export function getChangeEvent (name: string) {
27
+ switch (name) {
22
28
  case 'input':
23
29
  case 'textarea':
24
30
  case 'VxeInput':
25
- case 'VxeNumberInput':
26
31
  case 'VxeTextarea':
27
- case '$input':
28
- case '$textarea':
32
+ case '$input':// 已废弃
33
+ case '$textarea':// 已废弃
29
34
  return 'input'
30
35
  }
31
36
  return 'change'
@@ -839,7 +839,6 @@ $btnThemeList: (
839
839
  }
840
840
  .vxe-cell-title-prefix-icon,
841
841
  .vxe-cell-title-suffix-icon {
842
- cursor: help;
843
842
  @for $index from 0 to list.length($btnThemeList) {
844
843
  $item: list.nth($btnThemeList, $index + 1);
845
844
  &.theme--#{map.get($item, name)} {