picker icon indicating copy to clipboard operation
picker copied to clipboard

TimePicker panel will keep scrolling after select a time.

Open jtzcode opened this issue 9 months ago • 1 comments

i found the code below in useScrollTo.ts seemed to be buggy. After selecting a time from the time panel, the panel ul will scroll to the target li position. But when the target li is reaching top, the scrolling is not stopped, causing the scroll event could not be triggered on mouse-wheel scrolling.

// Break if dist get larger, which means user is scrolling
if (scrollDistRef.current !== null && scrollDistRef.current < dist) {
  stopScroll();
  return;
}
scrollDistRef.current = dist;

When the scenario above happens, the scrollDistRef.current is always equal to dist. So the stopScroll will be never called. As I observed, the issue only happened on older browser like Chrome 89 in my case and did not occur on latest Chrome. In the latest Chrome, the scroll event can be fired even if the scrolling is not stopped. I tried to changed the termimal condition as below, the scrolling is stopped and can be scrolled manually again:

if (scrollDistRef.current !== null && (scrollDistRef.current < dist || Math.abs(scrollDistRef.current - dist) < Number.EPSILON)) {
  stopScroll();
  return;
}

That is, to stop scrolling when scrollDistRef and dist is equal (dist does not change anymore). Not sure if anyone got the same issue. The antd version is 5.15.1

jtzcode avatar May 10 '24 09:05 jtzcode