diff --git a/CHANGELOG.md b/CHANGELOG.md index a222b2b81..93b83503d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### 🔧 Internal changes +- Refactor GraphDropdown component from being a child of Graph to being a child of NavBar + ## [0.7.2] - 2025-12-10 ### ✨ New features/enhancements diff --git a/js/components/common/NavBar.js.jsx b/js/components/common/NavBar.js.jsx index e046c7976..0f707df21 100644 --- a/js/components/common/NavBar.js.jsx +++ b/js/components/common/NavBar.js.jsx @@ -2,12 +2,32 @@ import React from "react" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { faDownload } from "@fortawesome/free-solid-svg-icons" import { Tooltip } from "react-tooltip" +import GraphDropdown from "../graph/GraphDropdown" /** * NavBar component. */ -export function NavBar({ selected_page, open_modal }) { +export function NavBar({ selected_page, open_modal, graphs = [], updateGraph }) { const isActive = page => (page === selected_page ? "selected-page" : undefined) + const [showGraphDropdown, setShowGraphDropdown] = React.useState(false) + const [dropdownTimeouts, setDropdownTimeouts] = React.useState([]) + + const clearDropdownTimeouts = () => { + dropdownTimeouts.forEach(timeout => clearTimeout(timeout)) + setDropdownTimeouts([]) + } + + const handleShowGraphDropdown = () => { + clearDropdownTimeouts() + setShowGraphDropdown(true) + } + + const handleHideGraphDropdown = () => { + const timeout = setTimeout(() => { + setShowGraphDropdown(false) + }, 500) + setDropdownTimeouts(dropdownTimeouts.concat(timeout)) + } return (