Popover コンポーネントは、Popover 内のコンテンツの表示を管理するために使用されます。Popover を使用して、一時的に情報を表示します。Popover は、ユーザーが Popover ウィンドウの外側をタップするか、明示的に閉じられるまで表示されたままになります。
以下のコンポーネントが含まれています。
Popover
名前 | 型 | デフォルト | 説明 |
---|---|---|---|
angle | boolean | true | Popover の「角」をレンダリングします。 |
angleClassName | string | undefined | 「角」要素に追加する追加の CSS クラス |
backdrop | boolean | true | Popover バックドロップ(背後に表示される暗い半透明レイヤー)を有効にします。 |
colors | object | Tailwind CSS カラークラスを含むオブジェクト | |
colors.bgIos | string | 'bg-ios-light-surface-3 dark:bg-ios-dark-surface-3' | |
colors.bgMaterial | string | 'bg-md-light-surface-3 dark:bg-md-dark-surface-3' | |
component | string | 'div' | コンポーネントの HTML 要素 |
opened | boolean | false | Popover の開閉と初期状態の設定を許可します。 |
size | string | 'w-64' | Tailwind CSS サイズクラス |
target | string | HTMLElement | Ref | Popover ターゲット要素。Popover はこの要素の周囲に配置されます。 | |
targetHeight | number | 仮想ターゲット要素の高さ(px単位)。実際のターゲット要素(`target` プロパティ)を使用しない場合に必要です。 | |
targetWidth | number | 仮想ターゲット要素の幅(px単位)。実際のターゲット要素(`target` プロパティ)を使用しない場合に必要です。 | |
targetX | number | 画面の左端からの仮想ターゲット要素の水平方向のオフセット。実際のターゲット要素(`target` プロパティ)を使用しない場合に必要です。 | |
targetY | number | 画面の上端からの仮想ターゲット要素の垂直方向のオフセット。実際のターゲット要素(`target` プロパティ)を使用しない場合に必要です。 | |
translucent | boolean | true | iOS テーマで Popover の背景をトランスルーセント(`backdrop-filter: blur` を使用)にします。 |
onBackdropClick | function(e) | バックドロップ要素のクリックハンドラー |
import React, { useRef, useState } from 'react';import {Page,Navbar,NavbarBackLink,Popover,Block,Link,Button,List,ListItem,} from 'konsta/react';export default function PopoverPage() {const [popoverOpened, setPopoverOpened] = useState(false);const popoverTargetRef = useRef(null);const openPopover = (targetRef) => {popoverTargetRef.current = targetRef;setPopoverOpened(true);};return (<Page><Navbartitle="Popover"right={<LinkclassName="popover-navbar-link"navbaronClick={() => openPopover('.popover-navbar-link')}>Popover</Link>}/><Block className="space-y-4"><p><ButtonclassName="popover-button"onClick={() => openPopover('.popover-button')}>Open popover on me</Button></p><p>Mauris fermentum neque et luctus venenatis. Vivamus a sem rhoncus,ornare tellus eu, euismod mauris. In porta turpis at semper convallis.Duis adipiscing leo eu nulla lacinia, quis rhoncus metus condimentum.Etiam nec malesuada nibh. Maecenas quis lacinia nisl, vel posueredolor. Vestibulum condimentum, nisl ac vulputate egestas, neque enimdignissim elit, rhoncus volutpat magna enim a est. Aenean sit ametligula neque. Cras suscipit rutrum enim. Nam a odio facilisis,elementum tellus non,{' '}<LinkclassName="popover-link-1"onClick={() => openPopover('.popover-link-1')}>popover</Link>{' '}tortor. Pellentesque felis eros, dictum vitae lacinia quis, lobortisvitae ipsum. Cras vehicula bibendum lorem quis imperdiet.</p><p>In hac habitasse platea dictumst. Etiam varius, ante vel ornarefacilisis, velit massa rutrum dolor, ac porta magna magna lacinianunc. Curabitur{' '}<LinkclassName="popover-link-2"onClick={() => openPopover('.popover-link-2')}>popover!</Link>{' '}cursus laoreet. Aenean vel tempus augue. Pellentesque in imperdietnibh. Mauris rhoncus nulla id sem suscipit volutpat. Pellentesque acarcu in nisi viverra pulvinar. Nullam nulla orci, bibendum sed ligulanon, ullamcorper iaculis mi. In hac habitasse platea dictumst.Praesent varius at nisl eu luctus. Cras aliquet porta est. Quisqueelementum quis dui et consectetur. Cum sociis natoque penatibus etmagnis dis parturient montes, nascetur ridiculus mus. Sed sed laoreetpurus. Pellentesque eget ante ante.</p><p>Duis et ultricies nibh. Sed facilisis turpis urna, ac imperdiet eratvenenatis eu. Proin sit amet faucibus tortor, et varius sem. Etiamvitae lacinia neque. Aliquam nisi purus, interdum in arcu sed,ultrices rutrum arcu. Nulla mi turpis, consectetur vel enim quis,facilisis viverra dui. Aliquam quis convallis tortor, quis semperligula. Morbi ullamcorper{' '}<LinkclassName="popover-link-3"onClick={() => openPopover('.popover-link-3')}>one more popover</Link>{' '}massa at accumsan. Etiam purus odio, posuere in ligula vitae, viverraultricies justo. Vestibulum nec interdum nisi. Aenean ac consecteturvelit, non malesuada magna. Sed pharetra vehicula augue, vel venenatislectus gravida eget. Curabitur lacus tellus, venenatis eu arcu in,interdum auctor nunc. Nunc non metus neque. Suspendisse viverra lectussed risus aliquet, vel accumsan dolor feugiat.</p></Block><Popoveropened={popoverOpened}target={popoverTargetRef.current}onBackdropClick={() => setPopoverOpened(false)}><List nested><ListItemtitle="Item 1"linkonClick={() => setPopoverOpened(false)}/><ListItemtitle="List Item 2"linkonClick={() => setPopoverOpened(false)}/><ListItemtitle="Item 3"linkonClick={() => setPopoverOpened(false)}/><ListItemtitle="List Item 4"linkonClick={() => setPopoverOpened(false)}/><ListItemtitle="Item 5"linkonClick={() => setPopoverOpened(false)}/></List></Popover></Page>);}