import { useEffect, useRef, useState, useCallback } from "@wordpress/element"; const Select = (props) => { const { onChange, options, value, contentWH } = props; const [isOpen, setIsOpen] = useState(false); const selectRef = useRef(null); const handleOptionClick = (option) => { setIsOpen(false); onChange(option.value); }; const handleClickOutside = useCallback((e) => { if (selectRef?.current && !selectRef?.current.contains(e.target)) { setIsOpen(false); } else if ( selectRef?.current && selectRef?.current.contains(e.target) && !e.target.classList?.contains("sp-smart-reserve-button") ) { setIsOpen(selectRef?.current.classList?.contains("open") ? false : true); } }, []); useEffect(() => { document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, [handleClickOutside]); const selectedOption = options?.find((item) => item.value === value); return (
{selectedOption ? selectedOption.label : " "}
{isOpen && ( )}
); }; export default Select;