import React, { useState, useRef, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { ChevronDownIcon } from '@heroicons/react/24/outline'; interface WeekdayOption { value: number; label: string; translationKey: string; } interface FirstDayOfWeekDropdownProps { value: number; onChange: (value: number) => void; className?: string; } const FirstDayOfWeekDropdown: React.FC = ({ value, onChange, className = '', }) => { const { t } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const weekdays: WeekdayOption[] = [ { value: 0, label: t('weekdaysFull.sunday', 'Sunday'), translationKey: 'weekdaysFull.sunday', }, { value: 1, label: t('weekdaysFull.monday', 'Monday'), translationKey: 'weekdaysFull.monday', }, { value: 2, label: t('weekdaysFull.tuesday', 'Tuesday'), translationKey: 'weekdaysFull.tuesday', }, { value: 3, label: t('weekdaysFull.wednesday', 'Wednesday'), translationKey: 'weekdaysFull.wednesday', }, { value: 4, label: t('weekdaysFull.thursday', 'Thursday'), translationKey: 'weekdaysFull.thursday', }, { value: 5, label: t('weekdaysFull.friday', 'Friday'), translationKey: 'weekdaysFull.friday', }, { value: 6, label: t('weekdaysFull.saturday', 'Saturday'), translationKey: 'weekdaysFull.saturday', }, ]; const selectedWeekday = weekdays.find((day) => day.value === value) || weekdays[1]; // Default to Monday useEffect(() => { const 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 handleSelect = (weekday: WeekdayOption) => { onChange(weekday.value); setIsOpen(false); }; return (
{isOpen && (
{weekdays.map((weekday) => ( ))}
)}
); }; export default FirstDayOfWeekDropdown;