import { clsx } from 'clsx'; import { useEffect, useRef } from 'react'; import { useIntl } from 'react-intl'; import messages from '../DateLookup.messages'; interface TableLinkProps { item: number; type: 'day' | 'month' | 'year'; title?: string; longTitle?: string; active: boolean; disabled: boolean; today: boolean; autofocus?: boolean; onClick: (item: number) => void; } const TableLink = ({ item, type, title, longTitle, active, disabled, today, autofocus, onClick, }: TableLinkProps) => { const buttonRef = useRef(null); const intl = useIntl(); useEffect(() => { if (autofocus) { setTimeout(() => { buttonRef.current?.focus(); }, 0); } }, [autofocus]); const onCalendarClick = (event: React.MouseEvent) => { event.preventDefault(); if (!disabled) { onClick(item); } }; const calculateAriaLabel = () => { if (active) { return `${longTitle || title || ''}, ${intl.formatMessage( messages.selected, )} ${intl.formatMessage(messages[type])}`; } return longTitle || title; }; return ( ); }; export default TableLink;