11import React , { useCallback , useEffect , useRef , useState , type SyntheticEvent } from 'react'
22import type { ButtonProps } from '../Button'
33import { Button , IconButton } from '../Button'
4- import { useMergedRefs , useOnEscapePress } from '../hooks'
4+ import { useOnEscapePress , useProvidedRefOrCreate } from '../hooks'
55import { useFocusTrap } from '../hooks/useFocusTrap'
66import { XIcon } from '@primer/octicons-react'
77import { useFocusZone } from '../hooks/useFocusZone'
88import { FocusKeys } from '@primer/behaviors'
99import Portal from '../Portal'
10+ import { useMergedRefs } from '../hooks/useMergedRefs'
1011import { useId } from '../hooks/useId'
1112import { ScrollableRegion } from '../ScrollableRegion'
1213import type { ResponsiveValue } from '../hooks/useResponsiveValue'
@@ -461,8 +462,8 @@ const Footer = React.forwardRef<HTMLDivElement, StyledFooterProps>(function Foot
461462Footer . displayName = 'Dialog.Footer'
462463
463464const Buttons : React . FC < React . PropsWithChildren < { buttons : DialogButtonProps [ ] } > > = ( { buttons} ) => {
464- const autoFocusRef = useRef < HTMLButtonElement > ( null )
465- const mergedRef = useMergedRefs ( autoFocusRef , buttons . find ( button => button . autoFocus ) ?. ref )
465+ // TODO: Convert to `useMergedRefs`
466+ const autoFocusRef = useProvidedRefOrCreate < HTMLButtonElement > ( buttons . find ( button => button . autoFocus ) ?. ref )
466467 let autoFocusCount = 0
467468 const [ hasRendered , setHasRendered ] = useState ( 0 )
468469 useEffect ( ( ) => {
@@ -484,7 +485,8 @@ const Buttons: React.FC<React.PropsWithChildren<{buttons: DialogButtonProps[]}>>
484485 { ...buttonProps }
485486 // 'normal' value is equivalent to 'default', this is used for backwards compatibility
486487 variant = { buttonType === 'normal' ? 'default' : buttonType }
487- ref = { autoFocus && autoFocusCount === 0 ? ( autoFocusCount ++ , mergedRef ) : null }
488+ // @ts -expect-error it needs a non nullable ref
489+ ref = { autoFocus && autoFocusCount === 0 ? ( autoFocusCount ++ , autoFocusRef ) : null }
488490 >
489491 { content }
490492 </ Button >
0 commit comments