import { clsx } from 'clsx'; import { forwardRef, useEffect, useRef } from 'react'; import { useEffectEvent } from '../common/hooks/useEffectEvent'; export interface TabProps { children?: React.ReactNode; disabled?: boolean; selected?: boolean; id: string; panelId: string; style?: React.CSSProperties; focusTab?: () => void; onKeyDown: React.KeyboardEventHandler; onClick?: React.MouseEventHandler; } const noop = () => {}; const Tab = forwardRef(function Tab( { children, id, disabled, panelId, selected, onKeyDown, onClick, style, focusTab = noop, }: TabProps, reference: React.ForwardedRef, ) { const handleFocusTab = useEffectEvent(focusTab); const firstUpdate = useRef(true); useEffect( function checkFocus() { if (firstUpdate.current) { firstUpdate.current = false; return; } if (selected) { handleFocusTab(); } }, [handleFocusTab, selected], ); return ( ); }); export default Tab;