Skip to content

Commit 903e739

Browse files
authored
Revert "Replace useRefObjectAsForwardedRef with useMergedRefs internally" (#7737)
1 parent 2755680 commit 903e739

16 files changed

Lines changed: 46 additions & 50 deletions

File tree

.changeset/combined-refs-hook.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/react/src/ActionBar/ActionBar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {ActionMenu} from '../ActionMenu'
1212
import {useFocusZone, FocusKeys} from '../hooks/useFocusZone'
1313
import styles from './ActionBar.module.css'
1414
import {clsx} from 'clsx'
15-
import {useMergedRefs} from '../hooks'
15+
import {useRefObjectAsForwardedRef} from '../hooks'
1616
import {createDescendantRegistry} from '../utils/descendant-registry'
1717

1818
const ACTIONBAR_ITEM_GAP = 8
@@ -470,7 +470,7 @@ function useWidth(ref: React.RefObject<HTMLElement | null>) {
470470
export const ActionBarIconButton = forwardRef(
471471
({disabled, onClick, ...props}: ActionBarIconButtonProps, forwardedRef) => {
472472
const ref = useRef<HTMLButtonElement>(null)
473-
const mergedRef = useMergedRefs(ref, forwardedRef)
473+
useRefObjectAsForwardedRef(forwardedRef, ref)
474474

475475
const {size, isVisibleChild} = React.useContext(ActionBarContext)
476476
const {groupId} = React.useContext(ActionBarGroupContext)
@@ -507,7 +507,7 @@ export const ActionBarIconButton = forwardRef(
507507
return (
508508
<IconButton
509509
aria-disabled={disabled}
510-
ref={mergedRef}
510+
ref={ref}
511511
size={size}
512512
onClick={clickHandler}
513513
{...props}

packages/react/src/ActionList/Heading.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {forwardRef} from 'react'
2-
import {useMergedRefs} from '../hooks'
2+
import {useRefObjectAsForwardedRef} from '../hooks'
33
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
44
import {default as HeadingComponent} from '../Heading'
55
import {ListContext} from './shared'
@@ -21,7 +21,7 @@ export type ActionListHeadingProps = {
2121

2222
export const Heading = forwardRef(({as, size, children, visuallyHidden = false, className, ...props}, forwardedRef) => {
2323
const innerRef = React.useRef<HTMLHeadingElement>(null)
24-
const mergedRef = useMergedRefs(forwardedRef, innerRef)
24+
useRefObjectAsForwardedRef(forwardedRef, innerRef)
2525

2626
const {headingId: headingId, variant: listVariant} = React.useContext(ListContext)
2727
const {container} = React.useContext(ActionListContainerContext)
@@ -37,7 +37,7 @@ export const Heading = forwardRef(({as, size, children, visuallyHidden = false,
3737
<HeadingComponent
3838
as={as}
3939
variant={size}
40-
ref={mergedRef}
40+
ref={innerRef}
4141
// use custom id if it is provided. Otherwise, use the id from the context
4242
id={props.id ?? headingId}
4343
className={clsx(className, classes.ActionListHeader)}

packages/react/src/Autocomplete/Autocomplete.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ describe('Autocomplete', () => {
150150
const inputNode = getByLabelText(AUTOCOMPLETE_LABEL)
151151

152152
expect(inputNode.getAttribute('aria-expanded')).not.toBe('true')
153-
inputNode.focus()
154153
fireEvent.click(inputNode)
155154
fireEvent.keyDown(inputNode, {key: 'ArrowDown'})
156155

packages/react/src/Autocomplete/AutocompleteInput.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import React, {useCallback, useContext, useEffect, useState} from 'react'
33
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
44
import {AutocompleteContext, AutocompleteInputContext} from './AutocompleteContext'
55
import TextInput from '../TextInput'
6-
import {useMergedRefs} from '../hooks/useMergedRefs'
6+
import {useRefObjectAsForwardedRef} from '../hooks/useRefObjectAsForwardedRef'
77
import type {ComponentProps} from '../utils/types'
88
import useSafeTimeout from '../hooks/useSafeTimeout'
99

@@ -43,7 +43,7 @@ const AutocompleteInput = React.forwardRef(
4343
}
4444
const {activeDescendantRef, id, inputRef, setInputValue, setShowMenu, showMenu} = autocompleteContext
4545
const {autocompleteSuggestion = '', inputValue = '', isMenuDirectlyActivated} = inputContext
46-
const mergedRef = useMergedRefs(forwardedRef, inputRef)
46+
useRefObjectAsForwardedRef(forwardedRef, inputRef)
4747
const [highlightRemainingText, setHighlightRemainingText] = useState<boolean>(true)
4848
const {safeSetTimeout} = useSafeTimeout()
4949

@@ -160,7 +160,7 @@ const AutocompleteInput = React.forwardRef(
160160
onKeyDown={handleInputKeyDown}
161161
onKeyPress={onInputKeyPress}
162162
onKeyUp={handleInputKeyUp}
163-
ref={mergedRef}
163+
ref={inputRef}
164164
aria-controls={`${id}-listbox`}
165165
aria-autocomplete="both"
166166
role="combobox"

packages/react/src/Autocomplete/AutocompleteOverlay.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type {OverlayProps} from '../Overlay'
55
import Overlay from '../Overlay'
66
import type {ComponentProps} from '../utils/types'
77
import {AutocompleteContext} from './AutocompleteContext'
8-
import {useMergedRefs} from '../hooks/useMergedRefs'
8+
import {useRefObjectAsForwardedRef} from '../hooks/useRefObjectAsForwardedRef'
99
import VisuallyHidden from '../_VisuallyHidden'
1010

1111
import classes from './AutocompleteOverlay.module.css'
@@ -57,7 +57,7 @@ function AutocompleteOverlay({
5757
[showMenu, selectedItemLength],
5858
)
5959

60-
const mergedRef = useMergedRefs(scrollContainerRef, floatingElementRef)
60+
useRefObjectAsForwardedRef(scrollContainerRef, floatingElementRef)
6161

6262
const closeOptionList = useCallback(() => {
6363
setShowMenu(false)
@@ -73,7 +73,7 @@ function AutocompleteOverlay({
7373
preventFocusOnOpen={true}
7474
onClickOutside={closeOptionList}
7575
onEscape={closeOptionList}
76-
ref={mergedRef}
76+
ref={floatingElementRef as React.RefObject<HTMLDivElement>}
7777
top={position?.top}
7878
left={position?.left}
7979
className={clsx(classes.Overlay, className)}

packages/react/src/Button/ButtonBase.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, {forwardRef, type JSX} from 'react'
22
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
33
import type {ButtonProps} from './types'
4-
import {useMergedRefs} from '../hooks/useMergedRefs'
4+
import {useRefObjectAsForwardedRef} from '../hooks/useRefObjectAsForwardedRef'
55
import {VisuallyHidden} from '../VisuallyHidden'
66
import Spinner from '../Spinner'
77
import CounterLabel from '../CounterLabel'
@@ -51,7 +51,7 @@ const ButtonBase = forwardRef(({children, as: Component = 'button', ...props}, f
5151
} = props
5252

5353
const innerRef = React.useRef<HTMLButtonElement>(null)
54-
const combinedRefs = useMergedRefs(forwardedRef, innerRef)
54+
useRefObjectAsForwardedRef(forwardedRef, innerRef)
5555

5656
const uuid = useId(id)
5757
const loadingAnnouncementID = `${uuid}-loading-announcement`
@@ -87,7 +87,8 @@ const ButtonBase = forwardRef(({children, as: Component = 'button', ...props}, f
8787
<Component
8888
aria-disabled={loading ? true : undefined}
8989
{...rest}
90-
ref={combinedRefs}
90+
// @ts-ignore temporary disable as we migrate to css modules, until we remove PolymorphicForwardRefComponent
91+
ref={innerRef}
9192
className={clsx(classes.ButtonBase, className)}
9293
data-block={block ? 'block' : null}
9394
data-inactive={inactive ? true : undefined}

packages/react/src/Dialog/Dialog.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {XIcon} from '@primer/octicons-react'
77
import {useFocusZone} from '../hooks/useFocusZone'
88
import {FocusKeys} from '@primer/behaviors'
99
import Portal from '../Portal'
10-
import {useMergedRefs} from '../hooks/useMergedRefs'
10+
import {useRefObjectAsForwardedRef} from '../hooks/useRefObjectAsForwardedRef'
1111
import {useId} from '../hooks/useId'
1212
import {ScrollableRegion} from '../ScrollableRegion'
1313
import type {ResponsiveValue} from '../hooks/useResponsiveValue'
@@ -299,7 +299,7 @@ const _Dialog = React.forwardRef<HTMLDivElement, React.PropsWithChildren<DialogP
299299
})
300300

301301
const dialogRef = useRef<HTMLDivElement>(null)
302-
const mergedRef = useMergedRefs(forwardedRef, dialogRef)
302+
useRefObjectAsForwardedRef(forwardedRef, dialogRef)
303303
const backdropRef = useRef<HTMLDivElement>(null)
304304

305305
useFocusTrap({
@@ -388,7 +388,7 @@ const _Dialog = React.forwardRef<HTMLDivElement, React.PropsWithChildren<DialogP
388388
}}
389389
>
390390
<div
391-
ref={mergedRef}
391+
ref={dialogRef}
392392
role={role}
393393
aria-labelledby={dialogLabelId}
394394
aria-describedby={dialogDescriptionId}

packages/react/src/Heading/Heading.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {clsx} from 'clsx'
22
import React, {forwardRef, useEffect} from 'react'
3-
import {useMergedRefs} from '../hooks'
3+
import {useRefObjectAsForwardedRef} from '../hooks'
44
import type {ComponentProps} from '../utils/types'
55
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
66
import classes from './Heading.module.css'
@@ -14,7 +14,7 @@ type StyledHeadingProps = {
1414

1515
const Heading = forwardRef(({as: Component = 'h2', className, variant, ...props}, forwardedRef) => {
1616
const innerRef = React.useRef<HTMLHeadingElement>(null)
17-
const mergedRef = useMergedRefs(forwardedRef, innerRef)
17+
useRefObjectAsForwardedRef(forwardedRef, innerRef)
1818

1919
if (__DEV__) {
2020
/**
@@ -32,7 +32,7 @@ const Heading = forwardRef(({as: Component = 'h2', className, variant, ...props}
3232
}, [innerRef])
3333
}
3434

35-
return <Component className={clsx(className, classes.Heading)} data-variant={variant} {...props} ref={mergedRef} />
35+
return <Component className={clsx(className, classes.Heading)} data-variant={variant} {...props} ref={innerRef} />
3636
}) as PolymorphicForwardRefComponent<HeadingLevels, StyledHeadingProps>
3737

3838
Heading.displayName = 'Heading'

packages/react/src/Link/Link.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {clsx} from 'clsx'
22
import React, {useEffect, type ForwardedRef, type ElementRef} from 'react'
3-
import {useMergedRefs} from '../hooks'
3+
import {useRefObjectAsForwardedRef} from '../hooks'
44
import classes from './Link.module.css'
55
import type {ComponentProps} from '../utils/types'
66
import {type PolymorphicProps, fixedForwardRef} from '../utils/modern-polymorphic'
@@ -20,7 +20,7 @@ export const UnwrappedLink = <As extends React.ElementType = 'a'>(
2020
) => {
2121
const {as: Component = 'a', className, inline, muted, hoverColor, ...restProps} = props
2222
const innerRef = React.useRef<ElementRef<As>>(null)
23-
const mergedRef = useMergedRefs(ref, innerRef)
23+
useRefObjectAsForwardedRef(ref, innerRef)
2424

2525
if (__DEV__) {
2626
/**
@@ -53,7 +53,8 @@ export const UnwrappedLink = <As extends React.ElementType = 'a'>(
5353
data-inline={inline}
5454
data-hover-color={hoverColor}
5555
{...restProps}
56-
ref={mergedRef}
56+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
57+
ref={innerRef as any}
5758
/>
5859
)
5960
}

0 commit comments

Comments
 (0)