@@ -127,14 +127,14 @@ export const Tabs = component$((props: TabsProps) => {
127
127
return selectedIndexSig . value === tabPanelsMap [ panelId ] ?. index ;
128
128
} ) ;
129
129
130
- const onTabKeyDown$ = $ ( ( key : KeyCode , tabId : string ) => {
130
+ const onTabKeyDown$ = $ ( ( key : KeyCode , currentTabId : string ) => {
131
131
const tabsRootElement = ref . value ;
132
132
133
133
const enabledTabs = tabPairsList . filter ( ( tabPair ) => {
134
134
return ! tabsMap [ tabPair . tabId ] . disabled ;
135
135
} ) ;
136
136
const currentFocusedTabIndex = enabledTabs . findIndex (
137
- ( tabPair ) => tabPair . tabId === tabId
137
+ ( tabPair ) => tabPair . tabId === currentTabId
138
138
) ;
139
139
140
140
if (
@@ -146,9 +146,7 @@ export const Tabs = component$((props: TabsProps) => {
146
146
if ( currentFocusedTabIndex < tabPairsList . length - 1 ) {
147
147
nextTabId = enabledTabs [ currentFocusedTabIndex + 1 ] . tabId ;
148
148
}
149
- tabsRootElement
150
- ?. querySelector < HTMLElement > ( `[data-tab-id='${ nextTabId } ']` )
151
- ?. focus ( ) ;
149
+ focusOnTab ( nextTabId ) ;
152
150
}
153
151
154
152
if (
@@ -160,22 +158,22 @@ export const Tabs = component$((props: TabsProps) => {
160
158
if ( currentFocusedTabIndex !== 0 ) {
161
159
previousTabId = enabledTabs [ currentFocusedTabIndex - 1 ] . tabId ;
162
160
}
163
- tabsRootElement
164
- ?. querySelector < HTMLElement > ( `[data-tab-id='${ previousTabId } ']` )
165
- ?. focus ( ) ;
161
+ focusOnTab ( previousTabId ) ;
166
162
}
167
163
168
164
if ( key === KeyCode . Home || key === KeyCode . PageUp ) {
169
- tabsRootElement
170
- ?. querySelector < HTMLElement > ( `[data-tab-id='${ enabledTabs [ 0 ] . tabId } ']` )
171
- ?. focus ( ) ;
165
+ const firstTabId = enabledTabs [ 0 ] . tabId ;
166
+ focusOnTab ( firstTabId ) ;
172
167
}
173
168
174
169
if ( key === KeyCode . End || key === KeyCode . PageDown ) {
170
+ const lastTabId = enabledTabs [ enabledTabs . length - 1 ] . tabId ;
171
+ focusOnTab ( lastTabId ) ;
172
+ }
173
+
174
+ function focusOnTab ( tabId : string ) {
175
175
tabsRootElement
176
- ?. querySelector < HTMLElement > (
177
- `[data-tab-id='${ enabledTabs [ enabledTabs . length - 1 ] . tabId } ']`
178
- )
176
+ ?. querySelector < HTMLElement > ( `[data-tab-id='${ tabId } ']` )
179
177
?. focus ( ) ;
180
178
}
181
179
} ) ;
0 commit comments