diff --git a/src/components/CategoryNavItem.jsx b/src/components/CategoryNavItem.jsx index 12ede6a..2188e95 100644 --- a/src/components/CategoryNavItem.jsx +++ b/src/components/CategoryNavItem.jsx @@ -1,9 +1,10 @@ import { navigate } from "astro:transitions/client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import data from "../data/tools.json"; import "./CategoryNavItem.css"; export default function CategoryNavItem(props) { + const buttonRef = useRef(null); const { title, category, filter } = props; const [isActive, setIsActive] = useState(false); @@ -36,9 +37,25 @@ export default function CategoryNavItem(props) { return () => (subscription = !subscription); }, [filter]); + useEffect(() => { + let subscription = true; + const activeButton = buttonRef.current.classList.contains("is-active"); + + if (activeButton) { + buttonRef.current.scrollIntoView({ + behavior: "instant", + block: "nearest", + inline: "center", + }); + } + + return () => (subscription = !subscription); + }, [isActive]); + return (