diff --git a/app/components/sidebar.tsx b/app/components/sidebar.tsx index 634639f1d40..4519c4be941 100644 --- a/app/components/sidebar.tsx +++ b/app/components/sidebar.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef } from "react"; +import { useEffect, useRef, useCallback } from "react"; import styles from "./home.module.scss"; @@ -67,18 +67,26 @@ function useDragSideBar() { lastUpdateTime.current = Date.now(); const d = e.clientX - startX.current; const nextWidth = limit(startDragWidth.current + d); - config.update((config) => (config.sidebarWidth = nextWidth)); + config.update((config) => { + if (nextWidth < MIN_SIDEBAR_WIDTH) { + config.sidebarWidth = NARROW_SIDEBAR_WIDTH; + } else { + config.sidebarWidth = nextWidth; + } + }); }); const handleMouseUp = useRef(() => { - startDragWidth.current = config.sidebarWidth ?? 300; + // In useRef the data is non-responsive, so `config.sidebarWidth` can't get the dynamic sidebarWidth + // startDragWidth.current = config.sidebarWidth ?? 300; window.removeEventListener("mousemove", handleMouseMove.current); window.removeEventListener("mouseup", handleMouseUp.current); }); const onDragMouseDown = (e: MouseEvent) => { startX.current = e.clientX; - + // Remembers the initial width each time the mouse is pressed + startDragWidth.current = config.sidebarWidth; window.addEventListener("mousemove", handleMouseMove.current); window.addEventListener("mouseup", handleMouseUp.current); };