diff --git a/src/components/Dropdown.jsx b/src/components/Dropdown.jsx new file mode 100644 index 0000000..ce5cb3a --- /dev/null +++ b/src/components/Dropdown.jsx @@ -0,0 +1,71 @@ +import { useState, useRef, useEffect } from 'preact/hooks'; + +const DropdownMenu = ({ + btnProps = {}, + btnContent, + menuItems, + position = 'top' +}) => { + const [isOpen, setIsOpen] = useState(false); + const triggerRef = useRef(null); + const menuRef = useRef(null); + + const toggleDropdown = () => { + setIsOpen(!isOpen); + }; + + const handleClickOutside = event => { + if ( + menuRef.current && + !menuRef.current.contains(event.target) && + !triggerRef.current.contains(event.target) + ) { + setIsOpen(false); + } + }; + + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + return ( +
+ + {isOpen && ( + + )} +
+ ); +}; + +export { DropdownMenu };