Skip to content

Commit 5ef7395

Browse files
authored
Add RefProp to props (#3823)
React components `Field`, `Legend`, and `Fieldset` should include `ref` in their `props`. Fixes #3577
1 parent 589ea90 commit 5ef7395

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

packages/@headlessui-react/src/components/field/field.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DisabledProvider, useDisabled } from '../../internal/disabled'
77
import { FormFieldsProvider } from '../../internal/form-fields'
88
import { IdProvider } from '../../internal/id'
99
import type { Props } from '../../types'
10-
import { forwardRefWithAs, useRender, type HasDisplayName } from '../../utils/render'
10+
import { forwardRefWithAs, useRender, type HasDisplayName, type RefProp } from '../../utils/render'
1111
import { useDescriptions } from '../description/description'
1212
import { useLabels } from '../label/label'
1313

@@ -76,7 +76,9 @@ function FieldFn<TTag extends ElementType = typeof DEFAULT_FIELD_TAG>(
7676
}
7777

7878
export interface _internal_ComponentField extends HasDisplayName {
79-
<TTag extends ElementType = typeof DEFAULT_FIELD_TAG>(props: FieldProps<TTag>): React.JSX.Element
79+
<TTag extends ElementType = typeof DEFAULT_FIELD_TAG>(
80+
props: FieldProps<TTag> & RefProp<typeof FieldFn>
81+
): React.JSX.Element
8082
}
8183

8284
export let Field = forwardRefWithAs(FieldFn) as _internal_ComponentField

packages/@headlessui-react/src/components/fieldset/fieldset.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useSlot } from '../../hooks/use-slot'
66
import { useSyncRefs } from '../../hooks/use-sync-refs'
77
import { DisabledProvider, useDisabled } from '../../internal/disabled'
88
import type { Props } from '../../types'
9-
import { forwardRefWithAs, useRender, type HasDisplayName } from '../../utils/render'
9+
import { forwardRefWithAs, useRender, type HasDisplayName, type RefProp } from '../../utils/render'
1010
import { useLabels } from '../label/label'
1111

1212
let DEFAULT_FIELDSET_TAG = 'fieldset' as const
@@ -70,7 +70,7 @@ function FieldsetFn<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG>(
7070

7171
export interface _internal_ComponentFieldset extends HasDisplayName {
7272
<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG>(
73-
props: FieldsetProps<TTag>
73+
props: FieldsetProps<TTag> & RefProp<typeof FieldsetFn>
7474
): React.JSX.Element
7575
}
7676

packages/@headlessui-react/src/components/legend/legend.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import React, { type ElementType, type Ref } from 'react'
44
import type { Props } from '../../types'
5-
import { forwardRefWithAs, type HasDisplayName } from '../../utils/render'
5+
import { forwardRefWithAs, type HasDisplayName, type RefProp } from '../../utils/render'
66
import { Label } from '../label/label'
77

88
let DEFAULT_LEGEND_TAG = Label
@@ -29,7 +29,7 @@ function LegendFn<TTag extends ElementType = typeof DEFAULT_LEGEND_TAG>(
2929

3030
export interface _internal_ComponentLegend extends HasDisplayName {
3131
<TTag extends ElementType = typeof DEFAULT_LEGEND_TAG>(
32-
props: LegendProps<TTag>
32+
props: LegendProps<TTag> & RefProp<typeof LegendFn>
3333
): React.JSX.Element
3434
}
3535

0 commit comments

Comments
 (0)