diff --git a/client/src/components/dashboard/SettingsButton.jsx b/client/src/components/dashboard/SettingsButton.jsx index fa3aff3..d1fbfb0 100644 --- a/client/src/components/dashboard/SettingsButton.jsx +++ b/client/src/components/dashboard/SettingsButton.jsx @@ -1,4 +1,4 @@ -import { useState, useMemo } from "react"; +import { useState, useMemo, useRef } from "react"; import { Button, IconButton, @@ -46,12 +46,20 @@ export function SettingsButton() { const categories = Object.keys(categorizedWidgets); + // use ref to capture html node for placing menu accordingly + const menuRef = useRef(null); + const getAnchorRect = () => { + if (!menuRef.current) return null; + return menuRef.current.getBoundingClientRect(); + }; + return ( <> {/* THE STATIC DROPDOWN MENU */} - + + + + {isEditing ? ( + <> + {/* WIRE DIRECTLY TO saveEdit */} + + Save Layout + - - {isEditing ? ( - <> - {/* WIRE DIRECTLY TO saveEdit */} - - Save Layout + + Discard Changes + + + ) : ( + + Edit Layout + )} - - Discard Changes - - - ) : ( - - Edit Layout + + + setIsLibraryOpen(true)} cursor="pointer" _hover={{ bg: "gray.100" }}> + Widget Library - )} - - - - setIsLibraryOpen(true)} cursor="pointer" _hover={{ bg: "gray.100" }}> - Widget Library - - + + {/* THE WIDGET LIBRARY MODAL (Controlled by isLibraryOpen) */}