NativePopover
NativePopover is a component that floats around an element to display information using the HTML Popover API.
<NativePopover.Root>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
NativePopover uses the HTML Popover API, which provides better performance and accessibility compared to the Popover. However, it requires browser support for the Popover API.Usage
import { NativePopover } from "@yamada-ui/react"
import { NativePopover } from "@/components/ui"
import { NativePopover } from "@workspaces/ui"
<NativePopover.Root>
<NativePopover.Anchor />
<NativePopover.Trigger />
<NativePopover.Content>
<NativePopover.Header />
<NativePopover.Body />
<NativePopover.Footer />
</NativePopover.Content>
</NativePopover.Root>
Change Size
<Wrap gap="md">
<For each={["xs", "sm", "md", "lg"]}>
{(size) => (
<NativePopover.Root key={size} size={size}>
<NativePopover.Trigger>
<Button>Size ({size})</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
)}
</For>
</Wrap>
Add Footer
<NativePopover.Root>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
<NativePopover.Footer>第280話</NativePopover.Footer>
</NativePopover.Content>
</NativePopover.Root>
Close Trigger
You can add a close button inside the popover using NativePopover.CloseTrigger.
<NativePopover.Root>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
<NativePopover.Footer>
<NativePopover.CloseTrigger>
<Button>Close</Button>
</NativePopover.CloseTrigger>
</NativePopover.Footer>
</NativePopover.Content>
</NativePopover.Root>
Display Popover on Different Element
To display a popover on a different element, use NativePopover.Anchor.
<NativePopover.Root>
<Wrap gap="md">
<NativePopover.Anchor>
<Center borderWidth="1px" h="10" px="3" rounded="l2">
Display Popover Here
</Center>
</NativePopover.Anchor>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
</Wrap>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
Change Placement
To change the placement, set placement to "start", "end-end", etc. By default, "end" is set.
<Wrap gap="md">
<For
each={[
"start",
"start-start",
"start-end",
"start-center",
"end",
"end-start",
"end-end",
"end-center",
"center-start",
"center-end",
]}
>
{(placement) => (
<NativePopover.Root key={placement} placement={placement}>
<NativePopover.Trigger>
<Button>{toTitleCase(placement)}</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
)}
</For>
</Wrap>
Change Offset
To change the offset, set gutter or offset to a value.
<HStack>
<NativePopover.Root gutter={32}>
<NativePopover.Trigger>
<Button>Gutter</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
<NativePopover.Root offset={[16, 16]}>
<NativePopover.Trigger>
<Button>Offset</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
</HStack>
Popover Modes
The HTML Popover API supports different modes for controlling popover behavior. This is a key feature that distinguishes NativePopover from the Popover component.
<Wrap gap="md">
<NativePopover.Root popover="auto">
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
<NativePopover.Root popover="hint">
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
<NativePopover.Root popover="manual">
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
</Wrap>
Disable
To disable the popover, set disabled to true.
<NativePopover.Root disabled>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
Nest Popovers
がんばれカカロット……お前がナンバー1だ!!
<NativePopover.Root>
<NativePopover.Trigger>
<Button>Open Parent</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
<Text>がんばれカカロット……お前がナンバー1だ!!</Text>
<NativePopover.Root>
<NativePopover.Trigger>
<Button>Click Me</Button>
</NativePopover.Trigger>
<NativePopover.Content>
<NativePopover.Header>ベジータ!</NativePopover.Header>
<NativePopover.Body>
がんばれカカロット……お前がナンバー1だ!!
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>
</NativePopover.Body>
</NativePopover.Content>
</NativePopover.Root>