Skip to content

Commit a820beb

Browse files
committed
fix: refactor scroll drag event handling and test helper
1 parent dc9f00e commit a820beb

2 files changed

Lines changed: 13 additions & 25 deletions

File tree

src/hooks/useScrollDrag.ts

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,6 @@ export default function useScrollDrag(
5858
}
5959
};
6060

61-
const onMouseUp = () => {
62-
clearDragState();
63-
};
64-
65-
const onDragStart = () => {
66-
clearDragState();
67-
};
68-
6961
const onMouseMove = (e: MouseEvent) => {
7062
if (mouseDownLock) {
7163
const mouseY = getPageXY(e, false);
@@ -86,18 +78,13 @@ export default function useScrollDrag(
8678
};
8779

8880
ele.addEventListener('mousedown', onMouseDown);
89-
ele.ownerDocument.addEventListener('mouseup', onMouseUp);
81+
ele.ownerDocument.addEventListener('mouseup', clearDragState);
9082
ele.ownerDocument.addEventListener('mousemove', onMouseMove);
91-
92-
ele.ownerDocument.addEventListener('dragstart', onDragStart);
93-
ele.ownerDocument.addEventListener('dragend', clearDragState);
9483

9584
return () => {
9685
ele.removeEventListener('mousedown', onMouseDown);
97-
ele.ownerDocument.removeEventListener('mouseup', onMouseUp);
86+
ele.ownerDocument.removeEventListener('mouseup', clearDragState);
9887
ele.ownerDocument.removeEventListener('mousemove', onMouseMove);
99-
ele.ownerDocument.removeEventListener('dragstart', onDragStart);
100-
ele.ownerDocument.removeEventListener('dragend', clearDragState);
10188
stopScroll();
10289
};
10390
}

tests/scroll.test.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,15 @@ describe('List.Scroll', () => {
734734

735735
it('should not scroll after drop table text', () => {
736736

737+
// Helper function to select text content of an element
738+
const selectElementText = (element) => {
739+
const range = document.createRange();
740+
range.selectNodeContents(element);
741+
const selection = window.getSelection();
742+
selection.removeAllRanges();
743+
selection.addRange(range);
744+
};
745+
737746
const onScroll = jest.fn();
738747
const onDragStart = jest.fn();
739748
const onDragEnd = jest.fn();
@@ -755,19 +764,11 @@ describe('List.Scroll', () => {
755764
const fixedItems = container.querySelectorAll('.fixed-item');
756765
const targetItem = fixedItems[0];
757766
if (targetItem) {
758-
const range = document.createRange();
759-
range.selectNodeContents(targetItem);
760-
const selection = window.getSelection();
761-
selection.removeAllRanges();
762-
selection.addRange(range);
767+
selectElementText(targetItem);
763768
}
764769
const listHolder = container.querySelector('.rc-virtual-list-holder');
765770
if (targetItem && listHolder) {
766-
const range = document.createRange();
767-
range.selectNodeContents(targetItem);
768-
const selection = window.getSelection();
769-
selection.removeAllRanges();
770-
selection.addRange(range);
771+
selectElementText(targetItem);
771772

772773
fireEvent.dragStart(targetItem, { bubbles: true });
773774

0 commit comments

Comments
 (0)