import { useState, useRef, useEffect } from 'react'; import './SortDropdown.css'; export interface SortOption { value: string; label: string; } interface SortDropdownProps { options: SortOption[]; value: string; order: 'asc' | 'desc'; onChange: (value: string, order: 'asc' | 'desc') => void; className?: string; } export function SortDropdown({ options, value, order, onChange, className = '' }: SortDropdownProps) { const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const selectedOption = options.find((o) => o.value === value) || options[0]; useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const toggleOrder = () => { onChange(value, order === 'asc' ? 'desc' : 'asc'); }; return (
{isOpen && (
{options.map((option) => ( ))}
)}
); }