Components/Overlays/Popover

Popover

Overlays

Anchored floating panel for forms, pickers, and rich content.

Non-modal floating panel anchored to a trigger. Compose from PopoverTrigger, PopoverContent, PopoverHeader, PopoverBody, PopoverFooter. Use for filter panels, context menus, and detail previews.

Usage

import { Popover, PopoverTrigger, PopoverContent, PopoverBody } from "nosible-ux"
import { Button } from "nosible-ux"

export default function Example() {
  return (
    <Popover>
      <PopoverTrigger asChild>
        <Button intent="outline">Region filter</Button>
      </PopoverTrigger>
      <PopoverContent>
        <PopoverBody>Filter options go here</PopoverBody>
      </PopoverContent>
    </Popover>
  )
}

Examples

With arrow

Accessibility

Radix Popover: role="dialog", focus management into the panel, and Escape to dismiss are handled. trapFocus is configurable.

Props

Name TypeDefaultDescription
align
"center" | "start" | "end" | undefinedAlignment relative to the trigger. Default: `"start"`.
alignOffset
number | undefined
arrowPadding
number | undefined
asChild
boolean | undefined
avoidCollisions
boolean | undefined
closeOnClickOutside
boolean | undefinedClose when pointer-down occurs outside the panel. Default: `true`.
closeOnEscape
boolean | undefinedClose on Escape key press. Default: `true`.
collisionBoundary
Boundary | Boundary[] | undefined
collisionPadding
number | Partial<Record<"top" | "bottom" | "left" | "right", number>> | undefined
forceMount
true | undefinedUsed to force mounting when more control is needed. Useful when controlling animation with React animation libraries.
hideWhenDetached
boolean | undefined
onCloseAutoFocus
((event: Event) => void) | undefinedEvent handler called when auto-focusing on close. Can be prevented.
onEscapeKeyDown
((event: KeyboardEvent) => void) | undefinedEvent handler called when the escape key is down. Can be prevented.
onFocusOutside
((event: FocusOutsideEvent) => void) | undefinedEvent handler called when the focus moves outside of the `DismissableLayer`. Can be prevented.
onInteractOutside
((event: PointerDownOutsideEvent | FocusOutsideEvent) => void) | undefinedEvent handler called when an interaction happens outside the `DismissableLayer`. Specifically, when a `pointerdown` event happens outside or focus moves outside of it. Can be prevented.
onOpenAutoFocus
((event: Event) => void) | undefinedEvent handler called when auto-focusing on open. Can be prevented.
onPointerDownOutside
((event: PointerDownOutsideEvent) => void) | undefinedEvent handler called when the a `pointerdown` event happens outside of the `DismissableLayer`. Can be prevented.
side
"top" | "bottom" | "left" | "right" | undefined
sideOffset
number | undefinedDistance between the trigger and the panel in pixels. Default: `8`.
sticky
"partial" | "always" | undefined
trapFocus
boolean | undefinedKeep focus within the popover panel. Prevents focus from leaving the panel while it is open. Default: `false`.
updatePositionStrategy
"always" | "optimized" | undefined
withArrow
boolean | undefinedRender the pointing arrow inside the panel. Default: `false`.