diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 00000000..d0a77842
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1 @@
+npx lint-staged
\ No newline at end of file
diff --git a/docs/examples/basic.tsx b/docs/examples/basic.tsx
index b97a0962..7c460422 100644
--- a/docs/examples/basic.tsx
+++ b/docs/examples/basic.tsx
@@ -38,7 +38,11 @@ export default () => {
}
const onTabClick = (key: string) => {
- console.log('key', key);
+ console.log('onTabClick', key);
+ };
+
+ const onChange = (key: string) => {
+ console.log('onChange', key);
};
return (
@@ -46,6 +50,7 @@ export default () => {
diff --git a/package.json b/package.json
index 2802eb42..91a8efb5 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,8 @@
"now-build": "npm run build",
"prepublishOnly": "npm run lint && npm run test && npm run compile && rc-np",
"start": "dumi dev",
- "test": "rc-test"
+ "test": "rc-test",
+ "prepare": "husky && dumi setup"
},
"dependencies": {
"@rc-component/resize-observer": "^1.0.0",
@@ -45,6 +46,8 @@
"@rc-component/menu": "~1.0.0"
},
"devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.59.7",
+ "@typescript-eslint/parser": "^5.59.7",
"@rc-component/father-plugin": "^2.0.0",
"@rc-component/np": "^1.0.3",
"@rc-component/trigger": "^3.0.0",
@@ -54,36 +57,35 @@
"@types/classnames": "^2.2.10",
"@types/enzyme": "^3.10.5",
"@types/jest": "^29.4.0",
- "@types/keyv": "4.2.0",
"@types/react": "^18.2.42",
"@types/react-dom": "^18.0.11",
"@umijs/fabric": "^4.0.1",
- "coveralls": "^3.0.6",
"cross-env": "^7.0.2",
"dumi": "^2.0.0",
"eslint": "^8.54.0",
"eslint-plugin-jest": "^28.9.0",
"eslint-plugin-unicorn": "^56.0.1",
- "fastclick": "~1.0.6",
"father": "^4.0.0",
"gh-pages": "^6.1.0",
- "history": "^5.3.0",
- "immutability-helper": "^3.0.1",
+ "husky": "^9.1.7",
"less": "^4.1.3",
- "preact-compat": "^3.16.0",
+ "lint-staged": "^15.5.0",
+ "prettier": "^3.5.3",
"rc-test": "^7.0.14",
"react": "^18.0.0",
"react-dnd": "^10.0.0",
"react-dnd-html5-backend": "^10.0.0",
"react-dom": "^18.0.0",
"react-sticky": "^6.0.3",
- "sortablejs": "^1.7.0",
"typescript": "^5.3.2"
},
"peerDependencies": {
"react": ">=16.9.0",
"react-dom": ">=16.9.0"
},
+ "lint-staged": {
+ "*": "prettier --write --ignore-unknown"
+ },
"engines": {
"node": ">=8.x"
}
diff --git a/src/TabNavList/index.tsx b/src/TabNavList/index.tsx
index 7b49007b..1caca657 100644
--- a/src/TabNavList/index.tsx
+++ b/src/TabNavList/index.tsx
@@ -375,8 +375,9 @@ const TabNavList = React.forwardRef((props, ref
// Enter & Space
case 'Enter':
case 'Space': {
+ console.log('press', code);
e.preventDefault();
- onTabClick(focusKey, e);
+ onTabClick(activeKey, e);
break;
}
// Backspace
diff --git a/tests/accessibility.test.tsx b/tests/accessibility.test.tsx
index bb0531a4..809a2409 100644
--- a/tests/accessibility.test.tsx
+++ b/tests/accessibility.test.tsx
@@ -91,9 +91,10 @@ describe('Tabs.Accessibility', () => {
it('should activate tab on Enter/Space', async () => {
const onTabClick = jest.fn();
+ const onChange = jest.fn();
const user = userEvent.setup();
- render(createTabs({ onTabClick }));
+ render(createTabs({ onTabClick, onChange }));
// jump to first tab
await user.tab();
@@ -101,6 +102,7 @@ describe('Tabs.Accessibility', () => {
// activate tab
await user.keyboard(' ');
expect(onTabClick).toHaveBeenCalledTimes(1);
+ expect(onChange).not.toHaveBeenCalled();
// move focus to second tab
await user.keyboard('{ArrowRight}');
@@ -108,6 +110,7 @@ describe('Tabs.Accessibility', () => {
// activate tab
await user.keyboard('{Enter}');
expect(onTabClick).toHaveBeenCalledTimes(2);
+ expect(onChange).not.toHaveBeenCalled();
});
it('should not navigate to disabled tabs', async () => {