NativePopover
NativePopoverは、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はHTML Popover APIを使用しており、Popoverコンポーネントと比較して、パフォーマンスとアクセシビリティが向上しています。ただし、HTML Popover APIをサポートしているブラウザが必要です。使い方
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>
サイズを変更する
<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>
フッターを追加する
<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>
閉じるトリガーを追加する
ポップオーバー内に閉じるボタンを追加する場合は、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>
別の要素を参照して表示する
別の要素を参照して表示する場合は、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>
配置を変更する
配置を変更する場合は、placementに"start"や"end-end"などを指定します。デフォルトでは"end"が設定されています。
<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>
オフセットを変更する
オフセットを変更する場合は、gutterまたはoffsetに値を設定します。
<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>
ポップオーバーのモード
HTML Popover APIは、ポップオーバーの動作を制御するための異なるモードをサポートしています。これはNativePopoverをPopoverコンポーネントと区別する重要な機能です。
<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>
無効にする
無効にする場合は、disabledを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>
ネストさせる
がんばれカカロット……お前がナンバー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>
Props
類似のコンポーネント
Tooltip
Tooltipは、要素の補足など短い情報を表示するコンポーネントです。
Popover
Popoverは、要素の周りにフローティングして情報を表示するコンポーネントです。
Modal
Modalは、主要なコンテンツに重ねて表示され、ユーザーの注意を情報のみに集中させるコンポーネントです。
Menu
Menuは、一般的なドロップダウンメニューを表示するコンポーネントです。
Drawer
Drawerは、画面の端から表示されるパネルのコンポーネントです。
Indicator
Indicatorは、アバターなどの要素の隅に表示するコンポーネントです。