import React, { useEffect } from 'react'; import { cn } from '../../lib/cn'; import { checkMark, chevroneDropDownList } from '../../assets/icons/input'; import { useClickOutside } from '../../hooks/useClickOutside'; export interface DropDownListItem { text: string; value: string; } interface DropDownListProps { disabled?: boolean; className?: string; onChange: (state: string) => void; defaultState?: DropDownListItem; items: DropDownListItem[]; weight?: string; } export const DropDownList: React.FC = ({ // disabled = false, className = '', onChange, defaultState, items = [{ text: '', value: '' }], weight = 'w-[180px]', }) => { if (items.length == 0) items.push({ text: '', value: '' }); const [value, setValue] = React.useState( defaultState != undefined ? defaultState : items[0], ); const [active, setActive] = React.useState(false); const ref = React.useRef(null); useClickOutside(ref, () => { setActive(false); }); useEffect(() => { setValue(defaultState != undefined ? defaultState : items[0]); }, [defaultState]); return (
{ setActive(!active); }} > {value.text}
{items.map((v, i) => (
{ setValue(v); onChange(v.value); setActive(false); }} > {v.text} {v.text == value.text && ( )}
))}
); };