- 使用法
- プロパティ
- anchor: Element | VirtualElement | null
- anchorRect: DomRectWithOwnerDocument
- anchorRef: Element | PopoverAnchorRefReference | PopoverAnchorRefTopBottom | Range
- animate: boolean
- children: ReactNode
- expandOnMobile: boolean
- flip: boolean
- focusOnMount: ‘firstElement’ | boolean
- onFocusOutside: ( event: SyntheticEvent ) => void
- getAnchorRect: ( fallbackReferenceElement: Element | null ) => DomRectWithOwnerDocument
- headerTitle: string
- isAlternate: boolean
- noArrow: boolean
- offset: number
- onClose: () => void
- placement: ‘top’ | ‘top-start’ | ‘top-end’ | ‘right’ | ‘right-start’ | ‘right-end’ | ‘bottom’ | ‘bottom-start’ | ‘bottom-end’ | ‘left’ | ‘left-start’ | ‘left-end’ | ‘overlay’
- position: [yAxis] [xAxis] [optionalCorner]
- resize: boolean
- variant: ‘toolbar’ | ‘unstyled’
使用法
ポップオーバーをそのコンテナの隣に表示します。
コンポーネントからポップオーバーが返されると、それが表示されます。ポップオーバーを非表示にするには、単にコンポーネントのレンダー値からそれを省略してください。
import { useState } from 'react';
import { Button, Popover } from '@wordpress/components';
const MyPopover = () => {
const [ isVisible, setIsVisible ] = useState( false );
const toggleVisible = () => {
setIsVisible( ( state ) => ! state );
};
return (
<Button variant="secondary" onClick={ toggleVisible }>
Toggle Popover!
{ isVisible && <Popover>Popover is toggled!</Popover> }
</Button>
);
};
明示的なアンカーを渡すには、anchor
プロパティを使用できます。その際、アンカー要素はローカルステートに保存する必要があります。そうすることで、変更時に反応的に更新されます。
import { useState } from 'react';
import { Button, Popover } from '@wordpress/components';
const MyPopover = () => {
// Use internal state instead of a ref to make sure that the component
// re-renders when the popover's anchor updates.
const [ popoverAnchor, setPopoverAnchor ] = useState();
const [ isVisible, setIsVisible ] = useState( false );
const toggleVisible = () => {
setIsVisible( ( state ) => ! state );
};
return (
<p ref={ setPopoverAnchor }>Popover s anchor</p>
<Button variant="secondary" onClick={ toggleVisible }>
Toggle Popover!
</Button>
{ isVisible && (
<Popover
anchor={ popoverAnchor }
>
Popover is toggled!
</Popover>
) }
);
};
デフォルトでは、ポップオーバーはドキュメントのボディの最後にレンダリングされます。ポップオーバー要素をページの特定の位置にレンダリングしたい場合は、要素ツリーのさらに上にPopover.Slot
をレンダリングする必要があります:
import { createRoot } from 'react-dom/client';
import { Popover } from '@wordpress/components';
import Content from './Content';
const app = document.getElementById( 'app' );
const root = createRoot( app );
root.render(
<div>
<Content />
<Popover.Slot />
</div>
);
プロパティ
コンポーネントは以下のプロパティを受け入れます。このセットに含まれていないプロパティは、ポップオーバーコンテンツをラップする要素に適用されます。
anchor: Element | VirtualElement | null
ポップオーバーのPopover
がアンカーとして使用する要素です。Element
であるか、またはVirtualElement
であることができます。つまり、getBoundingClientRect()
およびownerDocument
プロパティが定義されたオブジェクトです。
要素は、変更時に反応的に更新されるように、プレーンな参照ではなくステートに保存する必要があります。
anchorRect: DomRectWithOwnerDocument
注: このプロパティは非推奨です。代わりにanchor
プロパティを使用してください。
固定ポップオーバー位置を指定するために使用される、追加のオプションownerDocument
プロパティを持つDOMRect
を拡張するオブジェクトです。
anchorRef: Element | PopoverAnchorRefReference | PopoverAnchorRefTopBottom | Range
注: このプロパティは非推奨です。代わりにanchor
プロパティを使用してください。
固定ポップオーバー位置を指定するために使用されます。Element
、element
へのReact参照、top
およびbottom
プロパティを持つオブジェクト(両方とも要素を指す)、またはrange
であることができます。
animate: boolean
ポップオーバーが開くときにアニメーションするかどうか。
children: ReactNode
ポップオーバーのコンテンツとしてレンダリングされるchildren
要素。
expandOnMobile: boolean
モバイルビューポートでポップオーバーを全画面表示します。
flip: boolean
通常の配置にスペースがない場合、ポップオーバーがその軸を越えて反転するかどうかを指定します。
「上」配置を使用している場合、ポップオーバーは「下」配置に切り替わります。「左」配置を使用している場合、ポップオーバーは「右」配置に切り替わります。
ポップオーバーは、反転時に「開始」または「終了」の整列を保持します。
focusOnMount: ‘firstElement’ | boolean
デフォルトでは、ポップオーバー内の最初のタブ可能要素がマウント時にフォーカスを受け取ります。これは、このプロパティを"firstElement"
に設定するのと同じです。
`````false`````値を指定すると、フォーカス処理が完全に無効になります(これは、適切にアクセシブルな代替動作が存在する場合にのみ行うべきです)。
- 必須: いいえ
- デフォルト: `````"firstElement"
onFocusOutside: ( event: SyntheticEvent ) => void
開いているポップオーバーからフォーカスが離れたときに呼び出されるコールバックです。これは、ポップオーバーが特定の状況下で閉じるべき場合にのみ提供されるべきです(たとえば、新しいdocument.activeElement
がポップオーバーのコンテンツであるか、ポップオーバーの可視性を制御している場合)。
提供されない場合、onClose
コールバックが代わりに呼び出されます。
getAnchorRect: ( fallbackReferenceElement: Element | null ) => DomRectWithOwnerDocument
注: このプロパティは非推奨です。代わりにanchor
プロパティを使用してください。
動的ポップオーバー位置を指定するために使用される、anchorRect
プロパティが期待するのと同じ値を返す関数です。
headerTitle: string
ポップオーバーがモバイルビューポートで全画面表示に切り替えられたときに表示されるヘッダーテキストをカスタマイズするために使用されます(expandOnMobile
プロパティを参照)。
isAlternate: boolean
注: このプロパティは非推奨です。'toolbar'
値を持つvariant
プロパティを使用してください。
ポップオーバーの異なる視覚スタイルを有効にするために使用されます。
noArrow: boolean
ポップオーバーのアンカーを指す矢印を表示/非表示にするために使用されます。
offset: number
アンカーとポップオーバーの間の距離(px単位)。
onClose: () => void
ポップオーバーを閉じるべきときに呼び出されるコールバックです。
placement: ‘top’ | ‘top-start’ | ‘top-end’ | ‘right’ | ‘right-start’ | ‘right-end’ | ‘bottom’ | ‘bottom-start’ | ‘bottom-end’ | ‘left’ | ‘left-start’ | ‘left-end’ | ‘overlay’
ポップオーバーの位置をアンカーに対して指定するために使用されます。
他の配置関連のプロパティは期待通りに動作しない場合がありますのでご注意ください。
- 必須: いいえ
- デフォルト: `````"bottom-start"
position: [yAxis] [xAxis] [optionalCorner]
注: 可能な場合はplacement
プロパティを使用してください。
アンカーに対するポップオーバーの位置を指定するためのレガシーな方法です。
可能な値:
yAxis
:'top' | 'middle' | 'bottom'
xAxis
:'left' | 'center' | 'right'
corner
:'top' | 'right' | 'bottom' | 'left'
- 必須: いいえ
resize: boolean
ビューポートの端に達したときに、ポップオーバーの内容が表示されなくなるのを防ぐために、ポップオーバーのサイズを調整します。
variant: ‘toolbar’ | ‘unstyled’
ポップオーバーのスタイルを指定します。
デフォルトスタイルのために未定義のままにします。可能な値は:
– unstyled
: ポップオーバーは本質的に目に見えるスタイルがなく、背景、境界線、アウトライン、またはドロップシャドウがなくても、ポップオーバーの内容は表示されます。
– toolbar
: 他の要素との高いコントラストを持つスタイルで、エレベーションはありません。これは、Toolbar
コンポーネントのスタイルに一致します。
– 必須: いいえ