feat(GridView): add mouse down event for selecting multiple entries

This commit is contained in:
shiyu
2025-12-16 15:57:32 +08:00
parent c2a473fac9
commit 8cf147bf34

View File

@@ -66,6 +66,24 @@ export const GridView: React.FC<Props> = ({ entries, thumbs, selectedEntries, pa
const [rect, setRect] = useState<{ left: number, top: number, width: number, height: number } | null>(null);
const [selecting, setSelecting] = useState(false);
useEffect(() => {
const grid = containerRef.current;
const scrollContainer = grid?.parentElement;
if (!scrollContainer) return;
const onBlankMouseDown = (e: MouseEvent) => {
if (e.button !== 0) return;
if (e.target !== scrollContainer) return;
startRef.current = { x: e.clientX, y: e.clientY };
setSelecting(true);
setRect({ left: e.clientX, top: e.clientY, width: 0, height: 0 });
e.preventDefault();
};
scrollContainer.addEventListener('mousedown', onBlankMouseDown);
return () => scrollContainer.removeEventListener('mousedown', onBlankMouseDown);
}, []);
useEffect(() => {
const onMove = (ev: MouseEvent) => {
if (!startRef.current) return;