vxe-table 3.11.17 → 3.11.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.11.17",
3
+ "version": "3.11.18",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -28,7 +28,7 @@
28
28
  "style": "lib/style.css",
29
29
  "typings": "types/index.d.ts",
30
30
  "dependencies": {
31
- "vxe-pc-ui": "^3.3.17"
31
+ "vxe-pc-ui": "^3.3.18"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/plugin-transform-modules-commonjs": "^7.25.7",
@@ -3388,9 +3388,13 @@ const Methods = {
3388
3388
  * 全局键盘事件
3389
3389
  */
3390
3390
  handleGlobalKeydownEvent (evnt: any) {
3391
+ const $xeTable = this
3392
+ const internalData = $xeTable
3393
+
3391
3394
  // 该行为只对当前激活的表格有效
3392
3395
  if (this.isActivated) {
3393
3396
  this.preventEvent(evnt, 'event.keydown', null, () => {
3397
+ const { afterFullData } = internalData
3394
3398
  const { filterStore, isCtxMenu, ctxMenuStore, editStore, editOpts, editConfig, mouseConfig, mouseOpts, keyboardConfig, keyboardOpts, treeConfig, treeOpts, highlightCurrentRow, currentRow, bodyCtxMenu, rowOpts } = this
3395
3399
  const { selected, actived } = editStore
3396
3400
  const { keyCode } = evnt
@@ -3456,6 +3460,7 @@ const Methods = {
3456
3460
  this._keyCtx = false
3457
3461
  }, 1000)
3458
3462
  } else if (isEnter && !hasAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
3463
+ const { isLastEnterAppendRow, beforeEnterMethod, enterMethod } = keyboardOpts
3459
3464
  // 退出选中
3460
3465
  if (hasCtrlKey) {
3461
3466
  // 如果是激活编辑状态,则取消编辑
@@ -3481,7 +3486,35 @@ const Methods = {
3481
3486
  if (keyboardOpts.enterToTab) {
3482
3487
  this.moveTabSelected(targetArgs, hasShiftKey, evnt)
3483
3488
  } else {
3484
- this.moveSelected(targetArgs, isLeftArrow, false, isRightArrow, true, evnt)
3489
+ const _rowIndex = $xeTable.getVTRowIndex(selected.row)
3490
+ const etrParams = {
3491
+ row: selected.row,
3492
+ rowIndex: $xeTable.getRowIndex(selected.row),
3493
+ $rowIndex: $xeTable.getVMRowIndex(selected.row),
3494
+ _rowIndex,
3495
+ column: selected.column,
3496
+ columnIndex: $xeTable.getColumnIndex(selected.column),
3497
+ $columnIndex: $xeTable.getVMColumnIndex(selected.column),
3498
+ _columnIndex: $xeTable.getVTColumnIndex(selected.column),
3499
+ $table: $xeTable
3500
+ }
3501
+ if (!beforeEnterMethod || beforeEnterMethod(etrParams) !== false) {
3502
+ // 最后一行按下回车键,自动追加一行
3503
+ if (isLastEnterAppendRow) {
3504
+ if (_rowIndex >= afterFullData.length - 1) {
3505
+ $xeTable.insertAt({}, -1).then(({ row: newRow }: any) => {
3506
+ $xeTable.scrollToRow(newRow, selected.column)
3507
+ $xeTable.setSelectCell(newRow, selected.column)
3508
+ })
3509
+ $xeTable.dispatchEvent('enter-append-row', etrParams, evnt)
3510
+ return
3511
+ }
3512
+ }
3513
+ this.moveSelected(targetArgs, isLeftArrow, false, isRightArrow, true, evnt)
3514
+ if (enterMethod) {
3515
+ enterMethod(etrParams)
3516
+ }
3517
+ }
3485
3518
  }
3486
3519
  }
3487
3520
  } else if (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
@@ -3540,7 +3573,7 @@ const Methods = {
3540
3573
  }
3541
3574
  } else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selected.column)) {
3542
3575
  if (!isEditStatus) {
3543
- const { backMethod } = keyboardOpts
3576
+ const { editMode, backMethod } = keyboardOpts
3544
3577
  // 如果是删除键
3545
3578
  if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row || selected.column)) {
3546
3579
  const params = {
@@ -3556,7 +3589,10 @@ const Methods = {
3556
3589
  if (backMethod) {
3557
3590
  backMethod(params)
3558
3591
  } else {
3559
- setCellValue(selected.row, selected.column, null)
3592
+ // 追加方式与覆盖式
3593
+ if (editMode !== 'insert') {
3594
+ setCellValue(selected.row, selected.column, null)
3595
+ }
3560
3596
  this.handleEdit(selected.args, evnt)
3561
3597
  }
3562
3598
  this.emitEvent('cell-backspace-value', params, evnt)