vxe-table 3.22.12 → 3.23.0-beta.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 (61) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/edit/mixin.js +57 -20
  6. package/es/table/module/keyboard/mixin.js +2 -2
  7. package/es/table/render/index.js +130 -23
  8. package/es/table/src/cell.js +12 -20
  9. package/es/table/src/methods.js +43 -28
  10. package/es/table/src/table.js +1 -1
  11. package/es/table/style.css +9 -0
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +4 -2
  14. package/es/ui/src/dom.js +7 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +9 -0
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +376 -163
  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/edit/mixin.js +72 -24
  25. package/lib/table/module/edit/mixin.min.js +1 -1
  26. package/lib/table/module/keyboard/mixin.js +2 -2
  27. package/lib/table/module/keyboard/mixin.min.js +1 -1
  28. package/lib/table/render/index.js +171 -26
  29. package/lib/table/render/index.min.js +1 -1
  30. package/lib/table/src/cell.js +8 -16
  31. package/lib/table/src/cell.min.js +1 -1
  32. package/lib/table/src/methods.js +17 -17
  33. package/lib/table/src/methods.min.js +1 -1
  34. package/lib/table/src/table.js +1 -1
  35. package/lib/table/src/table.min.js +1 -1
  36. package/lib/table/style/style.css +9 -0
  37. package/lib/table/style/style.min.css +1 -1
  38. package/lib/ui/index.js +4 -2
  39. package/lib/ui/index.min.js +1 -1
  40. package/lib/ui/src/dom.js +7 -1
  41. package/lib/ui/src/dom.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +9 -0
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/table/module/edit/mixin.ts +83 -25
  48. package/packages/table/module/keyboard/mixin.ts +2 -2
  49. package/packages/table/render/index.ts +144 -25
  50. package/packages/table/src/cell.ts +12 -20
  51. package/packages/table/src/methods.ts +43 -28
  52. package/packages/table/src/table.ts +1 -1
  53. package/packages/ui/index.ts +3 -1
  54. package/packages/ui/src/dom.ts +7 -1
  55. package/styles/components/table.scss +18 -0
  56. /package/es/{iconfont.1786589170707.ttf → iconfont.1787020799795.ttf} +0 -0
  57. /package/es/{iconfont.1786589170707.woff → iconfont.1787020799795.woff} +0 -0
  58. /package/es/{iconfont.1786589170707.woff2 → iconfont.1787020799795.woff2} +0 -0
  59. /package/lib/{iconfont.1786589170707.ttf → iconfont.1787020799795.ttf} +0 -0
  60. /package/lib/{iconfont.1786589170707.woff → iconfont.1787020799795.woff} +0 -0
  61. /package/lib/{iconfont.1786589170707.woff2 → iconfont.1787020799795.woff2} +0 -0
@@ -4224,6 +4224,7 @@ function handleSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
4224
4224
  const internalData = $xeTable as unknown as TableInternalData
4225
4225
 
4226
4226
  const { scrollXLoad, scrollYLoad, isAllOverflow } = reactData
4227
+ const autoWidthColumnList = $xeTable.computeAutoWidthColumnList
4227
4228
  internalData.lcsRunTime = Date.now()
4228
4229
  internalData.lcsTimeout = undefined
4229
4230
  internalData.intoRunScroll = false
@@ -4246,6 +4247,10 @@ function handleSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
4246
4247
  }
4247
4248
  if (isRollY && scrollYLoad) {
4248
4249
  yRest = $xeTable.updateScrollYData().then(() => {
4250
+ if (autoWidthColumnList.length) {
4251
+ calcCellWidth($xeTable)
4252
+ autoCellWidth($xeTable)
4253
+ }
4249
4254
  if (!isAllOverflow) {
4250
4255
  calcCellHeight($xeTable)
4251
4256
  updateRowOffsetTop($xeTable)
@@ -7933,8 +7938,8 @@ const tableMethods: any = {
7933
7938
  if (isEsc) {
7934
7939
  this.preventEvent(evnt, 'event.keydown', null, () => {
7935
7940
  $xeTable.dispatchEvent('keydown-start', {}, evnt)
7936
- if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
7937
- this.handleKeyboardCellAreaEvent(evnt)
7941
+ if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKdClAreaEvent) {
7942
+ $xeTable.handleKdClAreaEvent(evnt)
7938
7943
  } else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
7939
7944
  evnt.stopPropagation()
7940
7945
  // 如果按下了 Esc 键,关闭快捷菜单、筛选
@@ -7991,6 +7996,7 @@ const tableMethods: any = {
7991
7996
  const { isLastEnterAppendRow, beforeEnterMethod, enterMethod, isLastTabAppendRow, beforeTabMethod, tabMethod } = keyboardOpts
7992
7997
  const { selected, actived } = editStore
7993
7998
  const { keyCode } = evnt
7999
+ const isProcess = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PROCESS)
7994
8000
  const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
7995
8001
  const hasBackspaceKey = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.BACKSPACE)
7996
8002
  const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB)
@@ -8013,6 +8019,7 @@ const tableMethods: any = {
8013
8019
  const isEditStatus = isEnableConf(editConfig) && actived.column && actived.row
8014
8020
  const childrenField = treeOpts.children || treeOpts.childrenField
8015
8021
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod
8022
+ const selectRow = selected.row
8016
8023
  const selectColumn = selected.column
8017
8024
  if (operCtxMenu) {
8018
8025
  // 如果配置了右键菜单; 支持方向键操作、回车
@@ -8022,8 +8029,8 @@ const tableMethods: any = {
8022
8029
  } else {
8023
8030
  $xeTable.moveCtxMenu(evnt, ctxMenuStore, 'selected', isRightArrow, true, menuList)
8024
8031
  }
8025
- } else if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKeyboardCellAreaEvent) {
8026
- $xeTable.handleKeyboardCellAreaEvent(evnt)
8032
+ } else if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKdClAreaEvent) {
8033
+ $xeTable.handleKdClAreaEvent(evnt)
8027
8034
  } else if (isEsc) {
8028
8035
  // 如果按下了 Esc 键,关闭快捷菜单、筛选
8029
8036
  if ($xeTable.closeMenu) {
@@ -8041,7 +8048,7 @@ const tableMethods: any = {
8041
8048
  }
8042
8049
  }
8043
8050
  }
8044
- } else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selected.row && selectColumn && (selectColumn.type === 'checkbox' || selectColumn.type === 'radio')) {
8051
+ } else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selectRow && selectColumn && (selectColumn.type === 'checkbox' || selectColumn.type === 'radio')) {
8045
8052
  // 空格键支持选中复选框
8046
8053
  evnt.preventDefault()
8047
8054
  if (selectColumn.type === 'checkbox') {
@@ -8052,19 +8059,19 @@ const tableMethods: any = {
8052
8059
  } else if (isF2 && isEnableConf(editConfig)) {
8053
8060
  if (!isEditStatus) {
8054
8061
  // 如果按下了 F2 键
8055
- if (selected.row && selectColumn) {
8062
+ if (selectRow && selectColumn) {
8056
8063
  evnt.preventDefault()
8057
8064
  $xeTable.handleEdit(selected.args, evnt)
8058
8065
  }
8059
8066
  }
8060
8067
  } else if (isContextMenu) {
8061
8068
  // 如果按下上下文键
8062
- internalData._keyCtx = selected.row && selectColumn && bodyMenu.length
8069
+ internalData._keyCtx = selectRow && selectColumn && bodyMenu.length
8063
8070
  clearTimeout(internalData.keyCtxTimeout)
8064
8071
  internalData.keyCtxTimeout = setTimeout(() => {
8065
8072
  internalData._keyCtx = false
8066
8073
  }, 1000)
8067
- } else if (isEnter && !hasAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
8074
+ } else if (isEnter && !hasAltKey && keyboardConfig && keyboardOpts.isEnter && (selectRow || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
8068
8075
  // 退出选中
8069
8076
  if (isControlKey) {
8070
8077
  // 如果是激活编辑状态,则取消编辑
@@ -8078,11 +8085,11 @@ const tableMethods: any = {
8078
8085
  }
8079
8086
  } else {
8080
8087
  // 如果是激活状态,退则出到上一行/下一行
8081
- if (selected.row || actived.row) {
8082
- const activeRow = selected.row || actived.row
8088
+ if (selectRow || actived.row) {
8089
+ const activeRow = selectRow || actived.row
8083
8090
  const activeColumn = selectColumn || actived.column
8084
8091
  if (activeColumn) {
8085
- const activeParams = selected.row ? selected.args : actived.args
8092
+ const activeParams = selectRow ? selected.args : actived.args
8086
8093
  if (hasShiftKey) {
8087
8094
  if (keyboardOpts.enterToTab) {
8088
8095
  $xeTable.moveTabSelected(activeParams, hasShiftKey, evnt)
@@ -8185,7 +8192,7 @@ const tableMethods: any = {
8185
8192
  } else if (operArrow && keyboardConfig && keyboardOpts.isArrow) {
8186
8193
  if (!isEditStatus) {
8187
8194
  // 如果按下了方向键
8188
- if (mouseOpts.selected && selected.row && selectColumn) {
8195
+ if (mouseOpts.selected && selectRow && selectColumn) {
8189
8196
  $xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt)
8190
8197
  } else {
8191
8198
  // 当前行按键上下移动
@@ -8200,11 +8207,11 @@ const tableMethods: any = {
8200
8207
  }
8201
8208
  } else if (isTab && keyboardConfig && keyboardOpts.isTab) {
8202
8209
  // 如果按下了 Tab 键切换
8203
- if (selected.row || actived.row) {
8204
- const activeRow = selected.row || actived.row
8210
+ if (selectRow || actived.row) {
8211
+ const activeRow = selectRow || actived.row
8205
8212
  const activeColumn = selectColumn || actived.column
8206
8213
  if (activeColumn) {
8207
- const activeParams = selected.row ? selected.args : actived.args
8214
+ const activeParams = selectRow ? selected.args : actived.args
8208
8215
  const _rowIndex = $xeTable.getVTRowIndex(activeRow)
8209
8216
  const _columnIndex = $xeTable.getVTColumnIndex(activeColumn)
8210
8217
  const ttrParams = {
@@ -8246,13 +8253,13 @@ const tableMethods: any = {
8246
8253
  }
8247
8254
  }
8248
8255
  }
8249
- } else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selected.row || selectColumn)) {
8256
+ } else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selectRow || selectColumn)) {
8250
8257
  // 如果是删除键
8251
8258
  if (!isEditStatus) {
8252
8259
  const { delMethod } = keyboardOpts
8253
8260
  const params = {
8254
- row: selected.row,
8255
- rowIndex: $xeTable.getRowIndex(selected.row),
8261
+ row: selectRow,
8262
+ rowIndex: $xeTable.getRowIndex(selectRow),
8256
8263
  column: selectColumn as VxeTableDefines.ColumnInfo,
8257
8264
  columnIndex: $xeTable.getColumnIndex(selectColumn),
8258
8265
  $table: $xeTable,
@@ -8264,10 +8271,10 @@ const tableMethods: any = {
8264
8271
  if (delMethod) {
8265
8272
  delMethod(params)
8266
8273
  } else {
8267
- const selectCellValue = getCellValue(selected.row, selectColumn)
8274
+ const selectCellValue = getCellValue(selectRow, selectColumn)
8268
8275
  if (selectCellValue !== null) {
8269
8276
  $xeTable.handlePushStack()
8270
- setCellValue(selected.row, selectColumn, null)
8277
+ setCellValue(selectRow, selectColumn, null)
8271
8278
  }
8272
8279
  }
8273
8280
  // 如果按下 del 键,更新表尾数据
@@ -8275,16 +8282,20 @@ const tableMethods: any = {
8275
8282
  $xeTable.dispatchEvent('cell-delete-value', params, evnt)
8276
8283
  }
8277
8284
  }
8278
- } else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selectColumn)) {
8285
+ } else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selectRow || selectColumn)) {
8279
8286
  if (!isEditStatus) {
8280
8287
  const { backMethod } = keyboardOpts
8281
8288
  // 如果是删除键
8282
- if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row || selectColumn)) {
8289
+ if (keyboardOpts.isDel && isEnableConf(editConfig) && (selectRow || selectColumn)) {
8283
8290
  const params = {
8284
- row: selected.row,
8285
- rowIndex: $xeTable.getRowIndex(selected.row),
8291
+ row: selectRow,
8292
+ rowIndex: $xeTable.getRowIndex(selectRow),
8293
+ $rowIndex: $xeTable.getVMRowIndex(selectRow),
8294
+ _rowIndex: $xeTable.getVTRowIndex(selectRow),
8286
8295
  column: selectColumn as VxeTableDefines.ColumnInfo,
8287
8296
  columnIndex: $xeTable.getColumnIndex(selectColumn),
8297
+ $columnIndex: $xeTable.getVMColumnIndex(selectColumn),
8298
+ _columnIndex: $xeTable.getVTColumnIndex(selectColumn),
8288
8299
  $table: $xeTable,
8289
8300
  $grid: $xeGrid,
8290
8301
  $gantt: $xeGantt
@@ -8329,20 +8340,24 @@ const tableMethods: any = {
8329
8340
  evnt.preventDefault()
8330
8341
  $xeTable.handleUndoStackEvent(evnt)
8331
8342
  }
8332
- } else if (keyboardConfig && keyboardOpts.isEdit && !isControlKey && (isSpacebar || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) || (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222))) {
8343
+ } else if (keyboardConfig && keyboardOpts.isEdit && !isControlKey && (isSpacebar || isProcess || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) || (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222))) {
8333
8344
  const { editMode, editMethod } = keyboardOpts
8334
8345
  // 启用编辑后,空格键功能将失效
8335
8346
  // if (isSpacebar) {
8336
8347
  // evnt.preventDefault()
8337
8348
  // }
8338
8349
  // 如果是按下非功能键之外允许直接编辑
8339
- if (selectColumn && selected.row && isEnableConf(selectColumn.editRender)) {
8350
+ if (selectColumn && selectRow && isEnableConf(selectColumn.editRender)) {
8340
8351
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod
8341
8352
  const params = {
8342
- row: selected.row,
8343
- rowIndex: $xeTable.getRowIndex(selected.row),
8353
+ row: selectRow,
8354
+ rowIndex: $xeTable.getRowIndex(selectRow),
8355
+ $rowIndex: $xeTable.getVMRowIndex(selectRow),
8356
+ _rowIndex: $xeTable.getVTRowIndex(selectRow),
8344
8357
  column: selectColumn,
8345
8358
  columnIndex: $xeTable.getColumnIndex(selectColumn),
8359
+ $columnIndex: $xeTable.getVMColumnIndex(selectColumn),
8360
+ _columnIndex: $xeTable.getVTColumnIndex(selectColumn),
8346
8361
  $table: $xeTable,
8347
8362
  $grid: $xeGrid,
8348
8363
  $gantt: $xeGantt
@@ -1839,7 +1839,7 @@ export default {
1839
1839
  if (rowOpts.height && !this.showOverflow) {
1840
1840
  warnLog('vxe.error.notProp', ['table.show-overflow'])
1841
1841
  }
1842
- if (!$xeTable.triggerCelllAreaMnEvent) {
1842
+ if (!$xeTable.triggerClAreaMnEvent) {
1843
1843
  if (props.areaConfig) {
1844
1844
  warnLog('vxe.error.notProp', ['area-config'])
1845
1845
  }
@@ -205,9 +205,11 @@ VxeUI.setConfig({
205
205
  },
206
206
  editConfig: {
207
207
  // mode: 'cell',
208
+ // cache: true,
208
209
  showIcon: true,
209
210
  showAsterisk: true,
210
- autoFocus: true
211
+ autoFocus: true,
212
+ isReuseKeep: true
211
213
  },
212
214
  importConfig: {
213
215
  _typeMaps: {
@@ -55,7 +55,13 @@ export function isScale (val: any) {
55
55
  }
56
56
 
57
57
  export function hasClass (elem: any, cls: any) {
58
- return !!(elem && elem.className && elem.className.match && elem.className.match(getClsRE(cls)))
58
+ if (elem) {
59
+ if (elem.classList) {
60
+ return elem.classList.contains(cls)
61
+ }
62
+ return !!(elem.className && elem.className.match && elem.className.match(getClsRE(cls)))
63
+ }
64
+ return false
59
65
  }
60
66
 
61
67
  export function removeClass (elem: any, cls: any) {
@@ -2694,6 +2694,24 @@ $btnThemeList: (
2694
2694
  padding: 0;
2695
2695
  }
2696
2696
  }
2697
+
2698
+ .vxe-body--row {
2699
+ .vxe-table--column {
2700
+ .vxe-cell {
2701
+ .vxe-cell--wrapper {
2702
+ & > .vxe-reusekeep-control {
2703
+ position: absolute;
2704
+ width: 0;
2705
+ height: 0;
2706
+ opacity: 0;
2707
+ border: 0;
2708
+ padding: 0;
2709
+ outline: none;
2710
+ }
2711
+ }
2712
+ }
2713
+ }
2714
+ }
2697
2715
  }
2698
2716
 
2699
2717
  /*valid error*/