vxe-table 3.18.0 → 3.18.1

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 (45) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/edit/mixin.js +58 -20
  3. package/es/table/module/filter/mixin.js +12 -10
  4. package/es/table/module/menu/mixin.js +16 -9
  5. package/es/table/module/validator/mixin.js +4 -2
  6. package/es/table/src/methods.js +344 -46
  7. package/es/table/src/store.js +8 -0
  8. package/es/table/src/table.js +26 -9
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/lib/index.umd.js +518 -104
  12. package/lib/index.umd.min.js +1 -1
  13. package/lib/style.css +1 -1
  14. package/lib/table/module/edit/mixin.js +55 -16
  15. package/lib/table/module/edit/mixin.min.js +1 -1
  16. package/lib/table/module/filter/mixin.js +12 -10
  17. package/lib/table/module/filter/mixin.min.js +1 -1
  18. package/lib/table/module/menu/mixin.js +20 -13
  19. package/lib/table/module/menu/mixin.min.js +1 -1
  20. package/lib/table/module/validator/mixin.js +4 -2
  21. package/lib/table/module/validator/mixin.min.js +1 -1
  22. package/lib/table/src/methods.js +388 -52
  23. package/lib/table/src/methods.min.js +1 -1
  24. package/lib/table/src/store.js +15 -0
  25. package/lib/table/src/store.min.js +1 -0
  26. package/lib/table/src/table.js +28 -9
  27. package/lib/table/src/table.min.js +1 -1
  28. package/lib/ui/index.js +1 -1
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/package.json +1 -1
  33. package/packages/table/module/edit/mixin.ts +59 -23
  34. package/packages/table/module/filter/mixin.ts +17 -13
  35. package/packages/table/module/menu/mixin.ts +16 -9
  36. package/packages/table/module/validator/mixin.ts +8 -4
  37. package/packages/table/src/methods.ts +362 -50
  38. package/packages/table/src/store.ts +15 -0
  39. package/packages/table/src/table.ts +27 -9
  40. /package/es/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
  41. /package/es/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
  42. /package/es/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
  43. /package/lib/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
  44. /package/lib/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
  45. /package/lib/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
@@ -15,11 +15,13 @@ export default {
15
15
  * @param column
16
16
  */
17
17
  _openFilter (fieldOrColumn: any) {
18
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
19
+
18
20
  const column = handleFieldOrColumn(this, fieldOrColumn)
19
21
  if (column && column.filters) {
20
22
  const { elemStore } = this
21
23
  const { fixed } = column
22
- return this.scrollToColumn(column).then(() => {
24
+ return $xeTable.scrollToColumn(column).then(() => {
23
25
  const headerWrapperElem = elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']
24
26
  if (headerWrapperElem) {
25
27
  const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`)
@@ -27,7 +29,7 @@ export default {
27
29
  }
28
30
  })
29
31
  }
30
- return this.$nextTick()
32
+ return $xeTable.$nextTick()
31
33
  },
32
34
  /**
33
35
  * 修改筛选条件列表
@@ -195,9 +197,9 @@ export default {
195
197
  return filterList
196
198
  },
197
199
  handleColumnConfirmFilter (column: VxeTableDefines.ColumnInfo, evnt: Event | null) {
198
- const $xeTable = this
200
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
199
201
  const props = $xeTable
200
- const reactData = $xeTable
202
+ const reactData = $xeTable as unknown as TableReactData
201
203
 
202
204
  const { mouseConfig } = props
203
205
  const { scrollXLoad: oldScrollXLoad, scrollYLoad: oldScrollYLoad } = reactData
@@ -212,22 +214,22 @@ export default {
212
214
  datas.push(item.data)
213
215
  }
214
216
  })
215
- const filterList = this.getCheckedFilters()
216
- const params = { $table: this, $event: evnt, column, field, property: field, values, datas, filters: filterList, filterList }
217
+ const filterList = $xeTable.getCheckedFilters()
218
+ const params = { $table: $xeTable, $event: evnt as Event, column, field, property: field, values, datas, filters: filterList, filterList }
217
219
  // 如果是服务端筛选,则跳过本地筛选处理
218
220
  if (!filterOpts.remote) {
219
- this.handleTableData(true)
220
- this.checkSelectionStatus()
221
+ $xeTable.handleTableData(true)
222
+ $xeTable.checkSelectionStatus()
221
223
  }
222
- if (mouseConfig && mouseOpts.area && this.handleFilterEvent) {
223
- $xeTable.handleFilterEvent(evnt, params)
224
+ if (mouseConfig && mouseOpts.area && $xeTable.handleFilterEvent) {
225
+ $xeTable.handleFilterEvent(evnt as Event, params)
224
226
  }
225
227
  if (evnt) {
226
- $xeTable.emitEvent('filter-change', params, evnt)
228
+ $xeTable.dispatchEvent('filter-change', params, evnt)
227
229
  }
228
230
  $xeTable.closeFilter()
229
231
  return $xeTable.updateFooter().then(() => {
230
- const { scrollXLoad, scrollYLoad } = this
232
+ const { scrollXLoad, scrollYLoad } = reactData
231
233
  if ((oldScrollXLoad || scrollXLoad) || (oldScrollYLoad || scrollYLoad)) {
232
234
  if ((oldScrollXLoad || scrollXLoad)) {
233
235
  $xeTable.updateScrollXSpace()
@@ -259,6 +261,8 @@ export default {
259
261
  $xeTable.handleColumnConfirmFilter(column, evnt)
260
262
  },
261
263
  handleClearFilter (column: any) {
264
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
265
+
262
266
  if (column) {
263
267
  const { filters, filterRender } = column
264
268
  if (filters) {
@@ -272,7 +276,7 @@ export default {
272
276
  }
273
277
  })
274
278
  if (filterResetMethod) {
275
- filterResetMethod({ options: filters, column, $table: this })
279
+ filterResetMethod({ options: filters, column, $table: $xeTable })
276
280
  }
277
281
  }
278
282
  }
@@ -105,22 +105,29 @@ export default {
105
105
  const params: any = { type: layout, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns: this.visibleColumn.slice(0), $event: evnt }
106
106
  if (columnTargetNode.flag) {
107
107
  const cell = columnTargetNode.targetElem
108
- const column = this.getColumnNode(cell).item
108
+ const columnNodeRest = $xeTable.getColumnNode(cell)
109
+ const column = columnNodeRest ? columnNodeRest.item : null
109
110
  let typePrefix = `${layout}-`
110
- Object.assign(params, { column, columnIndex: this.getColumnIndex(column), cell })
111
+ if (column) {
112
+ Object.assign(params, { column, columnIndex: $xeTable.getColumnIndex(column), cell })
113
+ }
111
114
  if (layout === 'body') {
112
- const row = this.getRowNode(cell.parentNode).item
115
+ const rowNodeRest = $xeTable.getRowNode(cell.parentNode)
116
+ const row = rowNodeRest ? rowNodeRest.item : null
113
117
  typePrefix = ''
114
- params.row = row
115
- params.rowIndex = this.getRowIndex(row)
118
+ if (row) {
119
+ params.row = row
120
+ params.rowIndex = $xeTable.getRowIndex(row)
121
+ }
116
122
  }
123
+ const eventType = `${typePrefix}cell-menu` as 'cell-menu' | 'header-cell-menu' | 'footer-cell-menu'
117
124
  this.handleOpenMenuEvent(evnt, layout, params)
118
125
  // 在 v4 中废弃事件 cell-context-menu、header-cell-context-menu、footer-cell-context-menu
119
126
  if (this.$listeners[`${typePrefix}cell-context-menu`]) {
120
127
  warnLog('vxe.error.delEvent', [`${typePrefix}cell-context-menu`, `${typePrefix}cell-menu`])
121
- this.emitEvent(`${typePrefix}cell-context-menu`, params, evnt)
128
+ $xeTable.dispatchEvent(`${typePrefix}cell-context-menu` as any, params, evnt)
122
129
  } else {
123
- this.emitEvent(`${typePrefix}cell-menu`, params, evnt)
130
+ $xeTable.dispatchEvent(eventType, params, evnt)
124
131
  }
125
132
  return
126
133
  } else if (getEventTargetNode(evnt, this.$el, `vxe-table--${layout}-wrapper`, target => target.getAttribute('xid') === tId).flag) {
@@ -271,9 +278,9 @@ export default {
271
278
  // 在 v4 中废弃事件 context-menu-click
272
279
  if (this.$listeners['context-menu-click']) {
273
280
  warnLog('vxe.error.delEvent', ['context-menu-click', 'menu-click'])
274
- this.emitEvent('context-menu-click', params, evnt)
281
+ $xeTable.dispatchEvent('context-menu-click' as any, params, evnt)
275
282
  } else {
276
- this.emitEvent('menu-click', params, evnt)
283
+ $xeTable.dispatchEvent('menu-click', params, evnt)
277
284
  }
278
285
  this.closeMenu()
279
286
  }
@@ -5,7 +5,7 @@ import { scrollToView } from '../../../ui/src/dom'
5
5
  import { handleFieldOrColumn, getRowid } from '../../src/util'
6
6
  import { warnLog, errLog } from '../../../ui/src/log'
7
7
 
8
- import type { VxeTableDefines, TableInternalData, TableReactData } from '../../../../types'
8
+ import type { VxeTableDefines, TableInternalData, TableReactData, VxeTableConstructor, VxeTablePrivateMethods } from '../../../../types'
9
9
 
10
10
  const { getConfig, validators } = VxeUI
11
11
 
@@ -185,10 +185,12 @@ export default {
185
185
  * 聚焦到校验通过的单元格并弹出校验错误提示
186
186
  */
187
187
  handleValidError (params: any) {
188
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
189
+
188
190
  const { validOpts } = this
189
191
  return new Promise<void>(resolve => {
190
192
  if (validOpts.autoPos === false) {
191
- this.emitEvent('valid-error', params)
193
+ $xeTable.dispatchEvent('valid-error', params, null)
192
194
  resolve()
193
195
  } else {
194
196
  this.handleEdit(params, { type: 'valid-error', trigger: 'call' }).then(() => {
@@ -227,7 +229,7 @@ export default {
227
229
  * 返回 Promise 对象,或者使用回调方式
228
230
  */
229
231
  beginValidate (rows: any, cols: VxeTableDefines.ColumnInfo[] | null, cb: any, isFull: any) {
230
- const $xeTable = this
232
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
231
233
  const props = $xeTable
232
234
  const reactData = $xeTable as unknown as TableReactData
233
235
  const internalData = $xeTable as unknown as TableInternalData
@@ -546,6 +548,8 @@ export default {
546
548
  * 弹出校验错误提示
547
549
  */
548
550
  showValidTooltip (params: any) {
551
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
552
+
549
553
  const { $refs, height, validStore, validErrorMaps, tableData, validOpts } = this
550
554
  const { rule, row, column, cell } = params
551
555
  const validTip = $refs.refValidTooltip
@@ -570,7 +574,7 @@ export default {
570
574
  }
571
575
  })
572
576
  }
573
- this.emitEvent('valid-error', params, null)
577
+ $xeTable.dispatchEvent('valid-error', params, null)
574
578
  if (validTip) {
575
579
  if (validTip && (validOpts.message === 'tooltip' || (validOpts.message === 'default' && !height && tableData.length < 2))) {
576
580
  return validTip.open(cell, content)