Skip to content

Commit 913e9dd

Browse files
committed
chore: part of it
1 parent ee9d68d commit 913e9dd

File tree

6 files changed

+105
-5
lines changed

6 files changed

+105
-5
lines changed

examples/basic.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function renderRest(items: ItemType[]) {
4747

4848
const Demo = () => {
4949
const [responsive, setResponsive] = React.useState(true);
50-
const [data, setData] = React.useState(createData(1));
50+
const [data, setData] = React.useState(createData(2));
5151

5252
return (
5353
<div style={{ padding: 32 }}>
@@ -80,7 +80,7 @@ const Demo = () => {
8080
style={{
8181
border: '5px solid green',
8282
padding: 8,
83-
maxWidth: 300,
83+
width: 100,
8484
marginTop: 32,
8585
}}
8686
>

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
22
setupFiles: ['./tests/setup.js'],
33
snapshotSerializers: [require.resolve('enzyme-to-json/serializer')],
4+
setupFilesAfterEnv: ['<rootDir>/tests/setupFilesAfterEnv.ts']
45
};

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
"rc-util": "^5.19.2"
5050
},
5151
"devDependencies": {
52+
"@testing-library/jest-dom": "^5.16.4",
53+
"@testing-library/react": "^12.0.0",
5254
"@types/classnames": "^2.2.9",
5355
"@types/enzyme": "^3.10.8",
5456
"@types/jest": "^26.0.23",

src/Overflow.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,10 @@ function Overflow<ItemType = any>(
185185
// We take `mergedData` as deps which may cause dead loop if it's dynamic generate.
186186
// ref: https://github.com/ant-design/ant-design/issues/36559
187187
if (
188-
displayCount === count &&
189-
(suffixFixedStartVal === undefined ||
190-
suffixFixedStartVal === suffixFixedStart)
188+
displayCount === count
189+
// displayCount === count &&
190+
// (suffixFixedStartVal === undefined ||
191+
// suffixFixedStartVal === suffixFixedStart)
191192
) {
192193
return;
193194
}
@@ -206,6 +207,7 @@ function Overflow<ItemType = any>(
206207

207208
// ================================= Size =================================
208209
function onOverflowResize(_: object, element: HTMLElement) {
210+
console.log('resize overflow');
209211
setContainerWidth(element.clientWidth);
210212
}
211213

@@ -237,6 +239,7 @@ function Overflow<ItemType = any>(
237239
}
238240

239241
useLayoutEffect(() => {
242+
console.log('Effect:', mergedContainerWidth, mergedRestWidth, mergedData);
240243
if (mergedContainerWidth && mergedRestWidth && mergedData) {
241244
let totalWidth = suffixWidth;
242245

tests/github.spec.tsx

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import React from 'react';
2+
import { render, act } from '@testing-library/react';
3+
import { spyElementPrototypes } from 'rc-util/lib/test/domHook';
4+
import Overflow from '../src';
5+
6+
import { _rs as onResize } from 'rc-resize-observer/lib/utils/observerUtil';
7+
8+
interface ItemType {
9+
label: React.ReactNode;
10+
key: React.Key;
11+
}
12+
13+
function renderItem(item: ItemType) {
14+
return item.label;
15+
}
16+
17+
function renderRest(items: ItemType[]) {
18+
return `+${items.length}...`;
19+
}
20+
21+
describe('Overflow.github', () => {
22+
function getData(count: number) {
23+
return new Array(count).fill(undefined).map((_, index) => ({
24+
label: `Label ${index}`,
25+
key: `k-${index}`,
26+
}));
27+
}
28+
29+
beforeEach(() => {
30+
jest.useFakeTimers();
31+
});
32+
33+
afterEach(() => {
34+
jest.useRealTimers();
35+
});
36+
37+
const clientWidths = {
38+
'rc-overflow': 100,
39+
};
40+
41+
beforeAll(() => {
42+
spyElementPrototypes(HTMLDivElement, {
43+
clientWidth: {
44+
get() {
45+
let targetWidth = 0;
46+
Object.keys(clientWidths).forEach(key => {
47+
if (this.className.includes(key)) {
48+
targetWidth = clientWidths[key];
49+
}
50+
});
51+
52+
return targetWidth;
53+
},
54+
},
55+
});
56+
});
57+
58+
async function triggerResize(target: HTMLElement) {
59+
await act(async () => {
60+
onResize([{ target } as any]);
61+
for (let i = 0; i < 10; i += 1) {
62+
await Promise.resolve();
63+
}
64+
});
65+
}
66+
67+
it('only one', async () => {
68+
const { container } = render(
69+
<Overflow<ItemType>
70+
data={getData(2)}
71+
itemKey="key"
72+
renderItem={renderItem}
73+
renderRest={renderRest}
74+
maxCount="responsive"
75+
/>,
76+
);
77+
78+
// width resize
79+
await triggerResize(container.querySelector('.rc-overflow'));
80+
81+
setTimeout(() => {
82+
console.log(2333);
83+
}, 1000);
84+
85+
act(() => {
86+
jest.runAllTimers();
87+
});
88+
act(() => {
89+
jest.runAllTimers();
90+
});
91+
console.log(jest.getTimerCount());
92+
});
93+
});

tests/setupFilesAfterEnv.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import '@testing-library/jest-dom';

0 commit comments

Comments
 (0)