From acd0762f82616d2dae07b0381a0f1a828697501c Mon Sep 17 00:00:00 2001 From: corgifist Date: Sun, 27 Jul 2025 22:57:40 +0300 Subject: [PATCH] made sidebar trigger animation smoother --- .../SidebarTriggerAdjustable.tsx | 17 +++++++++++++---- .../StaticSidebarTrigger.tsx | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/sidebar-trigger-adjustable/SidebarTriggerAdjustable.tsx b/src/components/sidebar-trigger-adjustable/SidebarTriggerAdjustable.tsx index f8677b3..085056c 100644 --- a/src/components/sidebar-trigger-adjustable/SidebarTriggerAdjustable.tsx +++ b/src/components/sidebar-trigger-adjustable/SidebarTriggerAdjustable.tsx @@ -4,7 +4,7 @@ import { cn } from "@/lib/utils"; import { ComponentProps, useEffect, useState } from "react"; const easeSlide = (x: number) => ( - 1 - Math.pow(1 - x, 2) + x ); export const SidebarTriggerAdjustable = (props: ComponentProps<"div">) => { @@ -12,8 +12,17 @@ export const SidebarTriggerAdjustable = (props: ComponentProps<"div">) => { const [windowHeight, setWindowHeight] = useState(1); const isMobile = useIsMobile(); + let ticking = false; + useEffect(() => { - const handleScroll = () => setScrollY(window.scrollY); + const handleScroll = () => { + if (!ticking) { + window.requestAnimationFrame(() => { + setScrollY(window.scrollY); + ticking = false; + }); + } + }; const handleResize = () => setWindowHeight(window.innerHeight); setWindowHeight(window.innerHeight); @@ -31,7 +40,7 @@ export const SidebarTriggerAdjustable = (props: ComponentProps<"div">) => { slideAmount = easeSlide(slideAmount); return
; } \ No newline at end of file diff --git a/src/components/static-sidebar-trigger/StaticSidebarTrigger.tsx b/src/components/static-sidebar-trigger/StaticSidebarTrigger.tsx index 10a18d2..54df90d 100644 --- a/src/components/static-sidebar-trigger/StaticSidebarTrigger.tsx +++ b/src/components/static-sidebar-trigger/StaticSidebarTrigger.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from "react"; import { SidebarTrigger, useSidebar } from "../ui/sidebar"; export const StaticSidebarTrigger = () => { - + const { open } = useSidebar(); return ( <>