diff --git a/packages/app/src/pages/session/session-side-panel.tsx b/packages/app/src/pages/session/session-side-panel.tsx index 5c8efff38..a86e8b365 100644 --- a/packages/app/src/pages/session/session-side-panel.tsx +++ b/packages/app/src/pages/session/session-side-panel.tsx @@ -145,8 +145,12 @@ export function SessionSidePanel(props: { const [store, setStore] = createStore({ activeDraggable: undefined as string | undefined, + fileTreeScrolled: false, }) + let changesEl: HTMLDivElement | undefined + let allEl: HTMLDivElement | undefined + const handleDragStart = (event: unknown) => { const id = getDraggableId(event) if (!id) return @@ -167,6 +171,14 @@ export function SessionSidePanel(props: { setStore("activeDraggable", undefined) } + createEffect(() => { + if (!layout.fileTree.opened()) return + const tab = fileTreeTab() + const el = tab === "changes" ? changesEl : allEl + const next = (el?.scrollTop ?? 0) > 0 + setStore("fileTreeScrolled", (current) => (current === next ? current : next)) + }) + createEffect(() => { if (!file.ready()) return @@ -335,7 +347,7 @@ export function SessionSidePanel(props: { class="h-full" data-scope="filetree" > - + {reviewCount()}{" "} {language.t(reviewCount() === 1 ? "session.review.change.one" : "session.review.change.other")} @@ -344,7 +356,16 @@ export function SessionSidePanel(props: { {language.t("session.files.all")} - + (changesEl = el)} + onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => { + if (fileTreeTab() !== "changes") return + const next = e.currentTarget.scrollTop > 0 + setStore("fileTreeScrolled", (current) => (current === next ? current : next)) + }} + class="bg-background-stronger px-3 py-0" + > - + (allEl = el)} + onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => { + if (fileTreeTab() !== "all") return + const next = e.currentTarget.scrollTop > 0 + setStore("fileTreeScrolled", (current) => (current === next ? current : next)) + }} + class="bg-background-stronger px-3 py-0" + >