From cc5d2aae8cf843c345aa0fed282aed14b016a996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Fri, 26 Jul 2024 15:45:25 +0200 Subject: [PATCH] Adds dividers to project list when scrolled --- .../sidebar/view/internal/sidebar/Sidebar.tsx | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/features/sidebar/view/internal/sidebar/Sidebar.tsx b/src/features/sidebar/view/internal/sidebar/Sidebar.tsx index fb08521b..d90ddf1e 100644 --- a/src/features/sidebar/view/internal/sidebar/Sidebar.tsx +++ b/src/features/sidebar/view/internal/sidebar/Sidebar.tsx @@ -1,19 +1,55 @@ -import { Box } from "@mui/material" +import { useRef, useEffect, useState } from "react" +import { Box, Divider } from "@mui/material" import Header from "./Header" import UserButton from "./user/UserButton" import SettingsList from "./settings/SettingsList" import ProjectList from "./projects/ProjectList" const Sidebar = () => { + const [isScrolledToTop, setScrolledToTop] = useState(true) + const [isScrolledToBottom, setScrolledToBottom] = useState(true) + const projectListRef = useRef(null) + const handleScroll = () => { + const element = projectListRef.current + if (!element) { + return + } + setScrolledToTop(element.scrollTop < 10) + setScrolledToBottom(element.scrollHeight - element.scrollTop - element.clientHeight < 10) + } + useEffect(() => { + const element = projectListRef.current + if (element) { + element.addEventListener("scroll", handleScroll) + handleScroll() + return () => { + element.removeEventListener("scroll", handleScroll) + } + } + }, []) return <>
- + + + } +const AnimatedDivider = ({ isVisible }: { isVisible: boolean }) => { + return ( + + ) +} + export default Sidebar