import { useCallback, useRef, useState } from "react" import useSelect from "../../../hooks/use-select" import clsx from "clsx" import SelectDropdown from "../Dropdown" import { SelectProps } from "../types" const SelectBadge = ({ value, options, setSelected, addSelected, removeSelected, multiple, className, addAll = multiple, handleAddAll, ...props }: SelectProps) => { const [open, setOpen] = useState(false) const ref = useRef(null) const dropdownRef = useRef(null) const { isValueSelected, isAllSelected, handleChange, handleSelectAll } = useSelect({ value, options, multiple, setSelected, removeSelected, addSelected, handleAddAll, }) const getSelectedText = useCallback(() => { let str = "" const selectedOptions = options.filter((option) => value.includes(option.value) ) if (isAllSelected) { str = "All Areas" } else { if ( (!Array.isArray(value) && !value) || (Array.isArray(value) && !value.length) ) { str = "None selected" } else { str = selectedOptions[0].label } } return ( <> {str} {!isAllSelected && selectedOptions.length > 1 && ( {" "} + {selectedOptions.length} )} ) }, [isAllSelected, options, value]) return (
{ if (!dropdownRef.current?.contains(e.target as Element)) { setOpen((prev) => !prev) } }} > Show results from:{" "} {getSelectedText()}
) } export default SelectBadge