mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-08-28 19:46:41 +08:00
feat(GridView): add mouse down event for selecting multiple entries
This commit is contained in:
@@ -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 [rect, setRect] = useState<{ left: number, top: number, width: number, height: number } | null>(null);
|
||||||
const [selecting, setSelecting] = useState(false);
|
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(() => {
|
useEffect(() => {
|
||||||
const onMove = (ev: MouseEvent) => {
|
const onMove = (ev: MouseEvent) => {
|
||||||
if (!startRef.current) return;
|
if (!startRef.current) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user