Skip to content

Commit 7c3ce5c

Browse files
committed
Ensure ref are forwarded when freezing data
1 parent f335372 commit 7c3ce5c

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

packages/@headlessui-react/src/internal/frozen.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
1-
import React, { useState } from 'react'
1+
import React, { cloneElement, isValidElement, useState } from 'react'
22

3-
export function Frozen({ children, freeze }: { children: React.ReactNode; freeze: boolean }) {
3+
function FrozenFn(
4+
{ children, freeze }: { children: React.ReactNode; freeze: boolean },
5+
ref: React.ForwardedRef<HTMLElement>
6+
) {
47
let contents = useFrozenData(freeze, children)
8+
9+
if (isValidElement(contents)) {
10+
return cloneElement(contents as React.ReactElement, { ref })
11+
}
12+
513
return <>{contents}</>
614
}
715

16+
export const Frozen = React.forwardRef(FrozenFn)
17+
818
export function useFrozenData<T>(freeze: boolean, data: T) {
919
let [frozenValue, setFrozenValue] = useState(data)
1020

0 commit comments

Comments
 (0)