import { useCallback, useId, useMemo, useRef, useState } from 'react'; import type { ComponentPropsWithoutRef, FC } from 'react'; import { FormattedMessage } from 'react-intl'; import type { MessageDescriptor } from 'react-intl'; import classNames from 'classnames'; import Overlay from 'react-overlays/Overlay'; import type { SelectItem } from '../dropdown_selector'; import { DropdownSelector } from '../dropdown_selector'; interface DropdownProps { title: string; disabled?: boolean; items: SelectItem[]; onChange: (value: string) => void; current: string; emptyText?: MessageDescriptor; classPrefix: string; } export const Dropdown: FC< DropdownProps & Omit, keyof DropdownProps> > = ({ title, disabled, items, current, onChange, classPrefix, className, ...buttonProps }) => { const buttonRef = useRef(null); const accessibilityId = useId(); const [open, setOpen] = useState(false); const handleToggle = useCallback(() => { if (!disabled) { setOpen((prevOpen) => !prevOpen); } }, [disabled]); const handleClose = useCallback(() => { setOpen(false); }, []); const currentText = useMemo( () => items.find((i) => i.value === current)?.text, [current, items], ); return ( <> {({ props, placement }) => (
)}
); };