import React, { useEffect, useRef, useState } from "react"; import Label from "../Label"; const SelectField = ({ label = "Select", options = [], placeholder = "Select Option", required = false, value, onChange, valueKey = "id", labelKey = "name", isLoading = false, }) => { const [open, setOpen] = useState(false); const dropdownRef = useRef(null); useEffect(() => { const handleClickOutside = (event) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { setOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const selectedOption = options.find((opt) => opt[valueKey] === value); const displayText = selectedOption ? selectedOption[labelKey] : placeholder; const handleSelect = (option) => { onChange(option[valueKey]); setOpen(false); }; const toggleDropdown = () => setOpen((prev) => !prev); return (
{label && ( )} {open && !isLoading && ( )}
); }; export default SelectField;