From f5e80b04fae655b10d40d8f731a74df898bed58f Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 7 Mar 2026 04:20:14 +0530 Subject: [PATCH] feat: add scroll position tracking and dynamic masking to DocumentsTableShell for improved document preview experience; update CreateSearchSpaceDialog styling for consistency --- .../(manage)/components/DocumentsTableShell.tsx | 12 ++++++++++++ .../layout/ui/dialogs/CreateSearchSpaceDialog.tsx | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx index 5e2d9d6ca..7f6f7404f 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx @@ -345,6 +345,13 @@ export function DocumentsTableShell({ const [viewingDoc, setViewingDoc] = useState(null); const [viewingContent, setViewingContent] = useState(""); const [viewingLoading, setViewingLoading] = useState(false); + const [previewScrollPos, setPreviewScrollPos] = useState<"top" | "middle" | "bottom">("top"); + const handlePreviewScroll = useCallback((e: React.UIEvent) => { + const el = e.currentTarget; + const atTop = el.scrollTop <= 2; + const atBottom = el.scrollHeight - el.scrollTop - el.clientHeight <= 2; + setPreviewScrollPos(atTop ? "top" : atBottom ? "bottom" : "middle"); + }, []); const [deleteDoc, setDeleteDoc] = useState(null); const [isDeleting, setIsDeleting] = useState(false); @@ -752,6 +759,7 @@ export function DocumentsTableShell({
{viewingLoading ? (
diff --git a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx index 264db503a..98add9c5a 100644 --- a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx +++ b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx @@ -138,20 +138,20 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac )} /> - +