Skip to content

Commit daa7e48

Browse files
committed
fix: Tabs press Enter/Space on active tab should not trigger onChange
1 parent 629f13b commit daa7e48

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

docs/examples/basic.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,19 @@ export default () => {
3838
}
3939

4040
const onTabClick = (key: string) => {
41-
console.log('key', key);
41+
console.log('onTabClick', key);
42+
};
43+
44+
const onChange = (key: string) => {
45+
console.log('onChange', key);
4246
};
4347

4448
return (
4549
<React.StrictMode>
4650
<Tabs
4751
tabBarExtraContent="extra"
4852
onTabClick={onTabClick}
53+
onChange={onChange}
4954
direction={direction}
5055
items={items}
5156
/>

src/TabNavList/index.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -375,8 +375,9 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
375375
// Enter & Space
376376
case 'Enter':
377377
case 'Space': {
378+
console.log('press', code);
378379
e.preventDefault();
379-
onTabClick(focusKey, e);
380+
onTabClick(activeKey, e);
380381
break;
381382
}
382383
// Backspace

tests/accessibility.test.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -91,23 +91,26 @@ describe('Tabs.Accessibility', () => {
9191

9292
it('should activate tab on Enter/Space', async () => {
9393
const onTabClick = jest.fn();
94+
const onChange = jest.fn();
9495
const user = userEvent.setup();
9596

96-
render(createTabs({ onTabClick }));
97+
render(createTabs({ onTabClick, onChange }));
9798

9899
// jump to first tab
99100
await user.tab();
100101

101102
// activate tab
102103
await user.keyboard(' ');
103104
expect(onTabClick).toHaveBeenCalledTimes(1);
105+
expect(onChange).not.toHaveBeenCalled();
104106

105107
// move focus to second tab
106108
await user.keyboard('{ArrowRight}');
107109

108110
// activate tab
109111
await user.keyboard('{Enter}');
110112
expect(onTabClick).toHaveBeenCalledTimes(2);
113+
expect(onChange).not.toHaveBeenCalled();
111114
});
112115

113116
it('should not navigate to disabled tabs', async () => {

0 commit comments

Comments
 (0)