@@ -2,7 +2,16 @@ import { toRefs, Ref, ref, computed } from 'vue';
2
2
import get from 'lodash/get' ;
3
3
import { BaseTableProps } from '../interface' ;
4
4
import { on , off } from '../../utils/dom' ;
5
- import { ALL_REG , ARROW_DOWN_REG , ARROW_UP_REG , CLEAR_REG , ESCAPE_REG , SPACE_REG } from '../../_common/js/common' ;
5
+ import {
6
+ ALL_REG ,
7
+ ARROW_DOWN_REG ,
8
+ ARROW_UP_REG ,
9
+ CLEAR_REG ,
10
+ ESCAPE_REG ,
11
+ SPACE_REG ,
12
+ ARROW_LEFT_REG ,
13
+ ARROW_RIGHT_REG ,
14
+ } from '../../_common/js/common' ;
6
15
import { RowEventContext , TableRowData } from '../type' ;
7
16
8
17
/**
@@ -13,6 +22,7 @@ export function useHoverKeyboardEvent(props: BaseTableProps, tableRef: Ref<HTMLD
13
22
const { hover, data, activeRowType, keyboardRowHover, disableSpaceInactiveRow } = toRefs ( props ) ;
14
23
const hoverRow = ref < string | number > ( ) ;
15
24
const currentHoverRowIndex = ref ( - 1 ) ;
25
+ const tableRefTabIndex = ref ( 0 ) ;
16
26
17
27
// 单行高亮场景,不需要键盘悬浮效果
18
28
const needKeyboardRowHover = computed ( ( ) => {
@@ -67,6 +77,13 @@ export function useHoverKeyboardEvent(props: BaseTableProps, tableRef: Ref<HTMLD
67
77
} else if ( CLEAR_REG . test ( code ) && ! props . activeRowType ) {
68
78
props . onActiveRowAction ?.( { action : 'clear' , activeRowList : [ ] } ) ;
69
79
}
80
+
81
+ // 用于支持键盘默认的左右滚动,左右滚动时重置为undefined,其他情况下为0,支持键盘操作
82
+ if ( ARROW_LEFT_REG . test ( code ) || ARROW_RIGHT_REG . test ( code ) ) {
83
+ tableRefTabIndex . value = undefined ;
84
+ } else {
85
+ tableRefTabIndex . value = 0 ;
86
+ }
70
87
} ;
71
88
72
89
const addRowHoverKeyboardListener = ( ) => {
@@ -83,6 +100,7 @@ export function useHoverKeyboardEvent(props: BaseTableProps, tableRef: Ref<HTMLD
83
100
clearHoverRow,
84
101
addRowHoverKeyboardListener,
85
102
removeRowHoverKeyboardListener,
103
+ tableRefTabIndex,
86
104
} ;
87
105
}
88
106
0 commit comments