@@ -5482,6 +5482,7 @@ export default defineComponent({
5482
5482
tablePrivateMethods . preventEvent ( evnt , 'event.keydown' , null , ( ) => {
5483
5483
const { mouseConfig, keyboardConfig, treeConfig, editConfig, highlightCurrentRow } = props
5484
5484
const { ctxMenuStore, editStore, currentRow } = reactData
5485
+ const { afterFullData } = internalData
5485
5486
const isMenu = computeIsMenu . value
5486
5487
const bodyMenu = computeBodyMenu . value
5487
5488
const keyboardOpts = computeKeyboardOpts . value
@@ -5564,6 +5565,7 @@ export default defineComponent({
5564
5565
internalData . _keyCtx = false
5565
5566
} , 1000 )
5566
5567
} else if ( isEnter && ! isAltKey && keyboardConfig && keyboardOpts . isEnter && ( selected . row || actived . row || ( treeConfig && ( rowOpts . isCurrent || highlightCurrentRow ) && currentRow ) ) ) {
5568
+ const { isLastEnterAppendRow, beforeEnterMethod, enterMethod } = keyboardOpts
5567
5569
// 退出选中
5568
5570
if ( hasCtrlKey ) {
5569
5571
// 如果是激活编辑状态,则取消编辑
@@ -5589,7 +5591,35 @@ export default defineComponent({
5589
5591
if ( keyboardOpts . enterToTab ) {
5590
5592
$xeTable . moveTabSelected ( targetArgs , hasShiftKey , evnt )
5591
5593
} else {
5592
- $xeTable . moveSelected ( targetArgs , isLeftArrow , false , isRightArrow , true , evnt )
5594
+ const _rowIndex = $xeTable . getVTRowIndex ( selected . row )
5595
+ const etrParams = {
5596
+ row : selected . row ,
5597
+ rowIndex : $xeTable . getRowIndex ( selected . row ) ,
5598
+ $rowIndex : $xeTable . getVMRowIndex ( selected . row ) ,
5599
+ _rowIndex,
5600
+ column : selected . column ,
5601
+ columnIndex : $xeTable . getColumnIndex ( selected . column ) ,
5602
+ $columnIndex : $xeTable . getVMColumnIndex ( selected . column ) ,
5603
+ _columnIndex : $xeTable . getVTColumnIndex ( selected . column ) ,
5604
+ $table : $xeTable
5605
+ }
5606
+ if ( ! beforeEnterMethod || beforeEnterMethod ( etrParams ) !== false ) {
5607
+ // 最后一行按下回车键,自动追加一行
5608
+ if ( isLastEnterAppendRow ) {
5609
+ if ( _rowIndex >= afterFullData . length - 1 ) {
5610
+ $xeTable . insertAt ( { } , - 1 ) . then ( ( { row : newRow } ) => {
5611
+ $xeTable . scrollToRow ( newRow , selected . column )
5612
+ $xeTable . setSelectCell ( newRow , selected . column )
5613
+ } )
5614
+ $xeTable . dispatchEvent ( 'enter-append-row' , etrParams , evnt )
5615
+ return
5616
+ }
5617
+ }
5618
+ $xeTable . moveSelected ( targetArgs , isLeftArrow , false , isRightArrow , true , evnt )
5619
+ if ( enterMethod ) {
5620
+ enterMethod ( etrParams )
5621
+ }
5622
+ }
5593
5623
}
5594
5624
}
5595
5625
} else if ( treeConfig && ( rowOpts . isCurrent || highlightCurrentRow ) && currentRow ) {
@@ -5693,7 +5723,7 @@ export default defineComponent({
5693
5723
. then ( ( ) => tablePrivateMethods . triggerCurrentRowEvent ( evnt , params ) )
5694
5724
}
5695
5725
} else if ( keyboardConfig && isEnableConf ( editConfig ) && keyboardOpts . isEdit && ! hasCtrlKey && ! hasMetaKey && ( isSpacebar || ( keyCode >= 48 && keyCode <= 57 ) || ( keyCode >= 65 && keyCode <= 90 ) || ( keyCode >= 96 && keyCode <= 111 ) || ( keyCode >= 186 && keyCode <= 192 ) || ( keyCode >= 219 && keyCode <= 222 ) ) ) {
5696
- const { editMethod } = keyboardOpts
5726
+ const { editMode , editMethod } = keyboardOpts
5697
5727
// 启用编辑后,空格键功能将失效
5698
5728
// if (isSpacebar) {
5699
5729
// evnt.preventDefault()
@@ -5713,7 +5743,10 @@ export default defineComponent({
5713
5743
if ( editMethod ) {
5714
5744
editMethod ( params )
5715
5745
} else {
5716
- setCellValue ( selected . row , selected . column , null )
5746
+ // 追加方式与覆盖式
5747
+ if ( editMode !== 'insert' ) {
5748
+ setCellValue ( selected . row , selected . column , null )
5749
+ }
5717
5750
$xeTable . handleEdit ( selected . args , evnt )
5718
5751
}
5719
5752
}
0 commit comments