diff --git a/src/cryptometrics/components/dropdown/Dropdown.js b/src/cryptometrics/components/dropdown/Dropdown.js index 024740ea8b1c341711f86dca3cbcb81944677ef4..963426fc5b391b404bba4fa49e98b440c18b4dfc 100644 --- a/src/cryptometrics/components/dropdown/Dropdown.js +++ b/src/cryptometrics/components/dropdown/Dropdown.js @@ -1,6 +1,7 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useRef, useCallback } from "react"; import classNames from "classnames"; import { ChevronDownIcon } from "@heroicons/react/outline"; +import { useOnClickOutside } from "../../hooks"; function getCoin(list, id) { for (let i = 0; i < list.length; i++) { @@ -13,13 +14,16 @@ function getCoin(list, id) { function Dropdown({ list, value, setValue, disabled }) { const [open, setOpen] = useState(false); + const ref = useRef(null); + const callbackDropdownClose = useCallback(() => setOpen(false), []); + useOnClickOutside(ref, callbackDropdownClose); useEffect(() => { setOpen(false); }, [value]); return ( - <div className="relative"> + <div className="relative" ref={ref}> <button className={classNames(" px-3 py-2 rounded-md font-light", { "dark:bg-white dark:text-gray-800": false,