import React, { useState, useEffect, useRef } from "react"; import { useFormContext } from "react-hook-form"; import "./MultiSelectDropdown.css"; const SelectMultiple = ({ name, options = [], label = "Select options", labelKey = "name", valueKey = "id", placeholder = "Please select...", IsLoading = false, }) => { const { setValue, watch } = useFormContext(); const selectedValues = watch(name) || []; const [isOpen, setIsOpen] = useState(false); const [searchText, setSearchText] = useState(""); const dropdownRef = useRef(null); useEffect(() => { const handleClickOutside = (e) => { if (dropdownRef.current && !dropdownRef.current.contains(e.target)) { setIsOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const handleCheckboxChange = (value) => { const updated = selectedValues.includes(value) ? selectedValues.filter((v) => v !== value) : [...selectedValues, value]; setValue(name, updated, { shouldValidate: true }); }; const filteredOptions = options.filter((item) => item[labelKey]?.toLowerCase().includes(searchText.toLowerCase()) ); return (