import clsx from "clsx" import IconChevronUpDown from "../../Icons/ChevronUpDown" import { useRef, useState } from "react" import Badge from "../../Badge" import IconXMarkMini from "../../Icons/XMarkMini" import useSelect from "../../../hooks/use-select" import SelectDropdown from "../Dropdown" import { SelectProps } from "../types" const SelectInput = ({ value, options, setSelected, addSelected, removeSelected, multiple, className, addAll = multiple, handleAddAll, showClearButton = true, ...props }: SelectProps) => { const [open, setOpen] = useState(false) const ref = useRef(null) const dropdownRef = useRef(null) const { isValueSelected, hasSelectedValue, hasSelectedValues, selectedValues, isAllSelected, handleChange, handleSelectAll, } = useSelect({ value, options, multiple, setSelected, removeSelected, addSelected, handleAddAll, }) return (
{ if (!dropdownRef.current?.contains(e.target as Element)) { setOpen((prev) => !prev) } }} > {hasSelectedValues && ( {(value as string[]).length} {showClearButton && ( { e.stopPropagation() setSelected?.([]) }} /> )} )} {!multiple && hasSelectedValue && selectedValues.length ? selectedValues[0].label : props.placeholder}
) } export default SelectInput