ConfirmPopup は、ポップオーバーを使用した、使いやすくカスタマイズ可能な確認 API です。
import { ConfirmPopup } from 'primereact/confirmpopup'; // To use <ConfirmPopup> tag
import { confirmPopup } from 'primereact/confirmpopup'; // To use confirmPopup method
ConfirmPopup コンポーネントは、カスタマイズ用の設定オブジェクトを受け取るconfirmPopup 関数と対話するページ上に存在する必要があります。 ポップオーバーを整列させるためには、ソース要素を参照するtarget プロパティを指定する必要があります。
<Toast ref={toast} />
<ConfirmPopup />
<div className="card flex flex-wrap gap-2 justify-content-center">
<Button onClick={confirm1} icon="pi pi-check" label="Confirm"></Button>
<Button onClick={confirm2} icon="pi pi-times" label="Delete" className="p-button-danger"></Button>
</div>
宣言的は、visibleへのバインディングと、ソース要素を参照するtargetプロパティとともに、onHideイベントコールバックでConfirmDialogを制御するプログラム的なアプローチの代替手段です。
<Toast ref={toast} />
<ConfirmPopup target={buttonEl.current} visible={visible} onHide={() => setVisible(false)}
message="Are you sure you want to proceed?" icon="pi pi-exclamation-triangle" accept={accept} reject={reject} />
<Button ref={buttonEl} onClick={() => setVisible(true)} icon="pi pi-check" label="Confirm" />
テンプレートを使用すると、メッセージコンテンツをカスタマイズできます。
<Toast ref={toast} />
<ConfirmPopup group="templating" />
<div className="card flex justify-content-center">
<Button onClick={showTemplate} icon="pi pi-check" label="Confirm"></Button>
</div>
ヘッドレスモードは、デフォルトの要素の代わりに、確認 UI 全体を実装できる content prop を定義することで有効になります。
<Toast ref={toast} />
<ConfirmPopup
group="headless"
content={({message, acceptBtnRef, rejectBtnRef, hide}) =>
<div className="bg-gray-900 text-white border-round p-3">
<span>{message}</span>
<div className="flex align-items-center gap-2 mt-3">
<Button ref={acceptBtnRef} label="Save" onClick={() => {accept(); hide();}} className="p-button-sm p-button-outlined"></Button>
<Button ref={rejectBtnRef} label="Cancel" outlined onClick={() => {reject(); hide();}}className="p-button-sm p-button-text"></Button>
</div>
</div>
}
/>
<div className="card flex flex-wrap gap-2 justify-content-center">
<Button onClick={confirm1} icon="pi pi-check" label="Confirm"></Button>
<Button onClick={confirm2} icon="pi pi-times" label="Delete" className="p-button-danger"></Button>
</div>
ConfirmPopup コンポーネントは alertdialog ロールを使用しており、任意の属性がルート要素に渡されるため、ポップアップの内容を説明するために、aria-label や aria-labelledby などの属性を定義できます。 加えて aria-modal は、フォーカスがポップアップ内に保持されるため、追加されます。
ボタンなど、キーボードでアクセスできるトリガーコンポーネントを使用することをお勧めします。そうでない場合は、tabIndex を追加する必要があります。ConfirmPopup は、トリガーとポップアップ間の関係が定義されるように、aria-expanded 状態属性とaria-controlsをトリガーに追加します。
ポップアップが開くと、最初のフォーカス可能な要素がフォーカスを受け取ります。これは、ポップアップ内の要素に autofocus を追加することでカスタマイズできます。
キー | 機能 |
---|---|
tab | ポップアップ内の次のフォーカス可能な要素にフォーカスを移動します。 |
shift + tab | ポップアップ内の前のフォーカス可能な要素にフォーカスを移動します。 |
escape | ポップアップを閉じ、トリガーにフォーカスを移動します。 |
キー | 機能 |
---|---|
enter | アクションをトリガーし、ポップアップを閉じ、トリガーにフォーカスを移動します。 |
space | アクションをトリガーし、ポップアップを閉じ、トリガーにフォーカスを移動します。 |