Skip to content

Commit 157078b

Browse files
authored
feat: refactor to support rsuite v6 (#64)
* feat: support rsuite6, closes #63 * feat: update tests and configuration for React 19 and rsuite 6 support
1 parent 7b435ab commit 157078b

16 files changed

+7806
-6663
lines changed

demo/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useCallback } from 'react';
2-
import ReactDOM from 'react-dom';
2+
import { createRoot } from 'react-dom/client';
33
import { Button, ButtonToolbar, Divider, Panel } from 'rsuite';
44
import { alert, confirm, prompt } from '../src';
55
import './styles.css';
@@ -216,4 +216,4 @@ function App() {
216216
);
217217
}
218218

219-
ReactDOM.render(<App />, document.getElementById('app'));
219+
createRoot(document.getElementById('app')).render(<App />);

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
2+
testEnvironment: 'jsdom',
23
setupFilesAfterEnv: ['./jest.setup.js'],
34
watchPathIgnorePatterns: ['node_modules'],
45
};

jest.setup.js

Lines changed: 8 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,14 @@
11
import '@testing-library/jest-dom';
22

3-
if (process.env.RSUITE_VERSION === '5') {
4-
jest.mock(
5-
'date-fns/_lib/toInteger/index.js',
6-
() => {
7-
return jest.requireActual('date-fns2/_lib/toInteger/index.js');
8-
},
9-
{ virtual: true }
10-
);
11-
12-
jest.mock(
13-
'date-fns/_lib/cloneObject',
14-
() => {
15-
return jest.requireActual('date-fns2/_lib/cloneObject');
16-
},
17-
{ virtual: true }
18-
);
3+
if (process.env.REACT_VERSION === '18') {
4+
jest.mock('react', () => {
5+
return jest.requireActual('react18');
6+
});
197

20-
jest.mock('rsuite', () => {
21-
return jest.requireActual('rsuite5');
8+
jest.mock('react-dom', () => {
9+
return jest.requireActual('react-dom18');
2210
});
23-
} else {
24-
jest.mock('rsuite', () => {
25-
return jest.requireActual('rsuite4');
11+
jest.mock('react-dom/test-utils', () => {
12+
return jest.requireActual('react-dom18/test-utils');
2613
});
2714
}
28-
29-
switch (process.env.REACT_VERSION) {
30-
case '16':
31-
jest.mock('react', () => {
32-
return jest.requireActual('react16');
33-
});
34-
35-
jest.mock('react-dom', () => {
36-
return jest.requireActual('react-dom16');
37-
});
38-
jest.mock('react-dom/test-utils', () => {
39-
return jest.requireActual('react-dom16/test-utils');
40-
});
41-
break;
42-
case '17':
43-
jest.mock('react', () => {
44-
return jest.requireActual('react17');
45-
});
46-
47-
jest.mock('react-dom', () => {
48-
return jest.requireActual('react-dom17');
49-
});
50-
jest.mock('react-dom/test-utils', () => {
51-
return jest.requireActual('react-dom17/test-utils');
52-
});
53-
break;
54-
default:
55-
break;
56-
}

package.json

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@rsuite/interactions",
3-
"version": "2.0.0",
3+
"version": "2.4.0",
44
"description": "Call rsuite Modal at ease.",
55
"main": "cjs/index.js",
66
"module": "esm/index.js",
@@ -45,9 +45,9 @@
4545
},
4646
"homepage": "https://github.com/rsuite/interactions#readme",
4747
"peerDependencies": {
48-
"react": ">=16.8.0",
49-
"react-dom": ">=16.8.0",
50-
"rsuite": "^4.0.0 || ^5.0.1"
48+
"react": ">=18",
49+
"react-dom": ">=18",
50+
"rsuite": "^6.0.0"
5151
},
5252
"devDependencies": {
5353
"@babel/core": "^7.15.8",
@@ -56,10 +56,11 @@
5656
"@rollup/plugin-babel": "^5.3.0",
5757
"@rollup/plugin-commonjs": "^21.0.0",
5858
"@rollup/plugin-node-resolve": "^13.0.5",
59-
"@testing-library/jest-dom": "^5.14.1",
60-
"@testing-library/react": "^11.0.4",
61-
"@testing-library/user-event": "^12.1.7",
59+
"@testing-library/jest-dom": "^6.6.3",
60+
"@testing-library/react": "^16.2.0",
61+
"@testing-library/user-event": "^14.6.1",
6262
"babel-eslint": "^9.0.0",
63+
"babel-jest": "^29.7.0",
6364
"date-fns2": "npm:date-fns@^2.19.0",
6465
"eslint": "^7.11.0",
6566
"eslint-config-airbnb": "^18.2.0",
@@ -73,19 +74,16 @@
7374
"eslint-plugin-react-hooks": "^4.1.2",
7475
"gh-pages": "^2.0.1",
7576
"husky": "^9.1.7",
76-
"jest": "^26.5.2",
77+
"jest": "^29.7.0",
78+
"jest-environment-jsdom": "^29.7.0",
7779
"lint-staged": "^10.4.0",
7880
"prettier": "^2.1.2",
79-
"react": "^16.8.0",
80-
"react-dom": "^16.8.0",
81-
"react-dom16": "npm:react-dom@^16.8.0",
82-
"react-dom17": "npm:react-dom@^17.0.2",
83-
"react16": "npm:react@^16.8.0",
84-
"react17": "npm:react@^17.0.2",
81+
"react": "^19.0.0",
82+
"react-dom": "^19.0.0",
83+
"react-dom18": "npm:react-dom@^18.0.0",
84+
"react18": "npm:react@^18.0.0",
8585
"rollup": "^2.58.0",
86-
"rsuite": "^5.0.1",
87-
"rsuite4": "npm:rsuite@^4.10.3",
88-
"rsuite5": "npm:rsuite@^5.0.1",
86+
"rsuite": "6.0.0-canary-20250315",
8987
"semantic-release": "^19.0.3",
9088
"vite": "^2.6.5"
9189
},

0 commit comments

Comments
 (0)