Skip to content

Commit c484f99

Browse files
authored
fix: React 19 scroll sync (#902)
1 parent ad3a1f7 commit c484f99

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

src/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default function TimeColumn<DateType extends object>(props: TimeUnitColum
5454
stopScroll();
5555
clearDelayCheck();
5656
};
57-
}, [value, optionalValue, units]);
57+
}, [value, optionalValue, units.join(',')]);
5858

5959
// ========================= Change =========================
6060
// Scroll event if sync onScroll

tests/picker.spec.tsx

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,7 @@ describe('Picker.Basic', () => {
292292

293293
// https://github.com/ant-design/ant-design/issues/49400
294294
it('should not throw errow when input end year first', () => {
295-
const { container } = render(
296-
<DayRangePicker picker="year" />,
297-
);
295+
const { container } = render(<DayRangePicker picker="year" />);
298296
openPicker(container);
299297
fireEvent.focus(container.querySelectorAll('input')[1]);
300298
expect(() => {
@@ -369,7 +367,7 @@ describe('Picker.Basic', () => {
369367
it('pass tabIndex', () => {
370368
const { container } = render(
371369
<div>
372-
<DayPicker tabIndex={-1}/>
370+
<DayPicker tabIndex={-1} />
373371
</div>,
374372
);
375373

@@ -583,12 +581,7 @@ describe('Picker.Basic', () => {
583581
});
584582

585583
it('prefix', () => {
586-
render(
587-
<DayPicker
588-
prefix={<span className="prefix" />}
589-
allowClear
590-
/>,
591-
);
584+
render(<DayPicker prefix={<span className="prefix" />} allowClear />);
592585
expect(document.querySelector('.prefix')).toBeInTheDocument();
593586
});
594587

@@ -1064,6 +1057,10 @@ describe('Picker.Basic', () => {
10641057
});
10651058
});
10661059

1060+
beforeEach(() => {
1061+
triggered = false;
1062+
});
1063+
10671064
afterAll(() => {
10681065
domMock.mockRestore();
10691066
});
@@ -1083,6 +1080,46 @@ describe('Picker.Basic', () => {
10831080
jest.useRealTimers();
10841081
unmount();
10851082
});
1083+
1084+
it('not repeat scroll if disabledTime return same value', () => {
1085+
const getDisabledTimeFn = () => () => ({
1086+
disabledHours: () => [10],
1087+
disabledMinutes: () => [10],
1088+
disabledSeconds: () => [10],
1089+
});
1090+
1091+
const { rerender } = render(
1092+
<DayPicker
1093+
picker="time"
1094+
defaultValue={getDay('2020-07-22 09:03:28')}
1095+
open
1096+
disabledTime={getDisabledTimeFn()}
1097+
/>,
1098+
);
1099+
1100+
act(() => {
1101+
jest.advanceTimersByTime(1000);
1102+
jest.clearAllTimers();
1103+
});
1104+
expect(triggered).toBeTruthy();
1105+
1106+
// New disabledTime
1107+
triggered = false;
1108+
rerender(
1109+
<DayPicker
1110+
picker="time"
1111+
defaultValue={getDay('2020-07-22 09:03:28')}
1112+
open
1113+
disabledTime={getDisabledTimeFn()}
1114+
/>,
1115+
);
1116+
1117+
act(() => {
1118+
jest.advanceTimersByTime(1000);
1119+
jest.clearAllTimers();
1120+
});
1121+
expect(triggered).toBeFalsy();
1122+
});
10861123
});
10871124

10881125
describe('prevent default on keydown', () => {

0 commit comments

Comments
 (0)