From a75a9e23f9f6d97b00847f3882f2bcc867cb5c93 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Wed, 1 Apr 2026 02:35:02 +0530 Subject: [PATCH 1/3] (feat:fe) minor good things --- frontend/src/components/Dropdown.tsx | 26 +++++++--- frontend/src/components/SkeletonLoader.tsx | 55 +++++++++++++++++++++- frontend/src/modals/AddToolModal.tsx | 10 ++-- frontend/src/settings/Tools.tsx | 13 +++-- 4 files changed, 85 insertions(+), 19 deletions(-) diff --git a/frontend/src/components/Dropdown.tsx b/frontend/src/components/Dropdown.tsx index a6776f58..cca92f90 100644 --- a/frontend/src/components/Dropdown.tsx +++ b/frontend/src/components/Dropdown.tsx @@ -78,6 +78,7 @@ function Dropdown({ const searchRef = useRef(null); const [open, setOpen] = useState(false); const [query, setQuery] = useState(''); + const [dropUp, setDropUp] = useState(false); const radius = rounded === '3xl' ? 'rounded-3xl' : 'rounded-xl'; const radiusTop = rounded === '3xl' ? 'rounded-t-3xl' : 'rounded-t-xl'; @@ -90,14 +91,23 @@ function Dropdown({ setQuery(''); } }; - document.addEventListener('mousedown', handler); - return () => document.removeEventListener('mousedown', handler); + document.addEventListener('mousedown', handler, true); + return () => document.removeEventListener('mousedown', handler, true); }, []); useEffect(() => { if (open && searchable && searchRef.current) searchRef.current.focus(); }, [open, searchable]); + const handleToggle = () => { + if (!open && ref.current) { + const rect = ref.current.getBoundingClientRect(); + const spaceBelow = window.innerHeight - rect.bottom; + setDropUp(spaceBelow < 220); + } + setOpen((v) => !v); + }; + const filtered = useMemo(() => { if (!searchable || !query.trim()) return options; const q = query.toLowerCase(); @@ -110,8 +120,8 @@ function Dropdown({