Skip to content

Commit 9ae054e

Browse files
Rename PopoverOverlay to PopoverBackdrop (#3308)
* Rename `PopoverOverlay` to `PopoverBackdrop` We're aliasing `PopoverOverlay` to `PopoverBackdrop` and `PopoverOverlayProps` to `PopoverBackdropProps` for backwards compatability. * Update changelog * Update packages/@headlessui-react/CHANGELOG.md Co-authored-by: Jonathan Reinink <[email protected]> --------- Co-authored-by: Jonathan Reinink <[email protected]>
1 parent cf0c535 commit 9ae054e

File tree

6 files changed

+43
-26
lines changed

6 files changed

+43
-26
lines changed

packages/@headlessui-react/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
- Add CSS based transitions using `data-*` attributes ([#3273](https://github.com/tailwindlabs/headlessui/pull/3273), [#3285](https://github.com/tailwindlabs/headlessui/pull/3285))
1414
- Add a `transition` prop to `<Dialog />` component ([#3307](https://github.com/tailwindlabs/headlessui/pull/3307))
1515
- Re-introduce `<DialogBackdrop />` component ([#3307](https://github.com/tailwindlabs/headlessui/pull/3307))
16+
- Added `PopoverBackdrop` component to replace `PopoverOverlay` ([#3308](https://github.com/tailwindlabs/headlessui/pull/3308))
1617

1718
### Fixed
1819

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Next.js barrel file improvements (GENERATED FILE)
2+
export type * from '../popover/popover'
3+
export { PopoverBackdrop } from '../popover/popover'

packages/@headlessui-react/src/components/popover/popover.test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ describe('Safe guards', () => {
3636
it.each([
3737
['Popover.Button', Popover.Button],
3838
['Popover.Panel', Popover.Panel],
39-
['Popover.Overlay', Popover.Overlay],
39+
['Popover.Backdrop', Popover.Backdrop],
40+
['Popover.Backdrop', Popover.Overlay],
4041
])(
4142
'should error when we are using a <%s /> without a parent <Popover />',
4243
suppressConsoleLogs((name, Component) => {

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

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -724,35 +724,42 @@ function ButtonFn<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(
724724

725725
// ---
726726

727-
let DEFAULT_OVERLAY_TAG = 'div' as const
728-
type OverlayRenderPropArg = {
727+
let DEFAULT_BACKDROP_TAG = 'div' as const
728+
type BackdropRenderPropArg = {
729729
open: boolean
730730
} & TransitionData
731-
type OverlayPropsWeControl = 'aria-hidden'
731+
type BackdropPropsWeControl = 'aria-hidden'
732732

733-
let OverlayRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
733+
let BackdropRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
734734

735-
export type PopoverOverlayProps<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG> = Props<
735+
export type PopoverBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<
736736
TTag,
737-
OverlayRenderPropArg,
738-
OverlayPropsWeControl,
739-
{ transition?: boolean } & PropsForFeatures<typeof OverlayRenderFeatures>
737+
BackdropRenderPropArg,
738+
BackdropPropsWeControl,
739+
{ transition?: boolean } & PropsForFeatures<typeof BackdropRenderFeatures>
740740
>
741741

742-
function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(
743-
props: PopoverOverlayProps<TTag>,
742+
export type PopoverOverlayProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> =
743+
PopoverBackdropProps<TTag>
744+
745+
function BackdropFn<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(
746+
props: PopoverBackdropProps<TTag>,
744747
ref: Ref<HTMLElement>
745748
) {
746749
let internalId = useId()
747-
let { id = `headlessui-popover-overlay-${internalId}`, transition = false, ...theirProps } = props
748-
let [{ popoverState }, dispatch] = usePopoverContext('Popover.Overlay')
749-
let internalOverlayRef = useRef<HTMLElement | null>(null)
750-
let overlayRef = useSyncRefs(ref, internalOverlayRef)
750+
let {
751+
id = `headlessui-popover-backdrop-${internalId}`,
752+
transition = false,
753+
...theirProps
754+
} = props
755+
let [{ popoverState }, dispatch] = usePopoverContext('Popover.Backdrop')
756+
let internalBackdropRef = useRef<HTMLElement | null>(null)
757+
let backdropRef = useSyncRefs(ref, internalBackdropRef)
751758

752759
let usesOpenClosedState = useOpenClosed()
753760
let [visible, transitionData] = useTransition(
754761
transition,
755-
internalOverlayRef,
762+
internalBackdropRef,
756763
usesOpenClosedState !== null
757764
? (usesOpenClosedState & State.Open) === State.Open
758765
: popoverState === PopoverStates.Open
@@ -767,11 +774,11 @@ function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(
767774
return {
768775
open: popoverState === PopoverStates.Open,
769776
...transitionData,
770-
} satisfies OverlayRenderPropArg
777+
} satisfies BackdropRenderPropArg
771778
}, [popoverState, transitionData])
772779

773780
let ourProps = {
774-
ref: overlayRef,
781+
ref: backdropRef,
775782
id,
776783
'aria-hidden': true,
777784
onClick: handleClick,
@@ -781,10 +788,10 @@ function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(
781788
ourProps,
782789
theirProps,
783790
slot,
784-
defaultTag: DEFAULT_OVERLAY_TAG,
785-
features: OverlayRenderFeatures,
791+
defaultTag: DEFAULT_BACKDROP_TAG,
792+
features: BackdropRenderFeatures,
786793
visible,
787-
name: 'Popover.Overlay',
794+
name: 'Popover.Backdrop',
788795
})
789796
}
790797

@@ -1187,9 +1194,9 @@ export interface _internal_ComponentPopoverButton extends HasDisplayName {
11871194
): JSX.Element
11881195
}
11891196

1190-
export interface _internal_ComponentPopoverOverlay extends HasDisplayName {
1191-
<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(
1192-
props: PopoverOverlayProps<TTag> & RefProp<typeof OverlayFn>
1197+
export interface _internal_ComponentPopoverBackdrop extends HasDisplayName {
1198+
<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(
1199+
props: PopoverBackdropProps<TTag> & RefProp<typeof BackdropFn>
11931200
): JSX.Element
11941201
}
11951202

@@ -1207,13 +1214,17 @@ export interface _internal_ComponentPopoverGroup extends HasDisplayName {
12071214

12081215
let PopoverRoot = forwardRefWithAs(PopoverFn) as _internal_ComponentPopover
12091216
export let PopoverButton = forwardRefWithAs(ButtonFn) as _internal_ComponentPopoverButton
1210-
export let PopoverOverlay = forwardRefWithAs(OverlayFn) as _internal_ComponentPopoverOverlay
1217+
/** @deprecated use `<PopoverBackdrop>` instead of `<PopoverOverlay>` */
1218+
export let PopoverOverlay = forwardRefWithAs(BackdropFn) as _internal_ComponentPopoverBackdrop
1219+
export let PopoverBackdrop = forwardRefWithAs(BackdropFn) as _internal_ComponentPopoverBackdrop
12111220
export let PopoverPanel = forwardRefWithAs(PanelFn) as _internal_ComponentPopoverPanel
12121221
export let PopoverGroup = forwardRefWithAs(GroupFn) as _internal_ComponentPopoverGroup
12131222

12141223
export let Popover = Object.assign(PopoverRoot, {
12151224
/** @deprecated use `<PopoverButton>` instead of `<Popover.Button>` */
12161225
Button: PopoverButton,
1226+
/** @deprecated use `<PopoverBackdrop>` instead of `<Popover.Backdrop>` */
1227+
Backdrop: PopoverBackdrop,
12171228
/** @deprecated use `<PopoverOverlay>` instead of `<Popover.Overlay>` */
12181229
Overlay: PopoverOverlay,
12191230
/** @deprecated use `<PopoverPanel>` instead of `<Popover.Panel>` */

packages/@headlessui-react/src/index.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ it('should expose the correct components', () => {
6161
'MenuSeparator',
6262

6363
'Popover',
64+
'PopoverBackdrop',
6465
'PopoverButton',
6566
'PopoverGroup',
6667
'PopoverOverlay',

packages/@headlessui-react/src/test-utils/accessibility-assertions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1326,7 +1326,7 @@ export function getPopoverPanel(): HTMLElement | null {
13261326
}
13271327

13281328
export function getPopoverOverlay(): HTMLElement | null {
1329-
return document.querySelector('[id^="headlessui-popover-overlay-"]')
1329+
return document.querySelector('[id^="headlessui-popover-backdrop-"]')
13301330
}
13311331

13321332
// ---

0 commit comments

Comments
 (0)