メインウィンドウまたは別のダイアログウィンドウ上にオーバーレイ表示されるウィンドウで、その下にあるコンテンツは操作できなくなります。
import React from 'react';import * as Dialog from '@radix-ui/react-dialog';import { Cross2Icon } from '@radix-ui/react-icons';import './styles.css';const DialogDemo = () => (<Dialog.Root><Dialog.Trigger asChild><button className="Button violet">Edit profile</button></Dialog.Trigger><Dialog.Portal><Dialog.Overlay className="DialogOverlay" /><Dialog.Content className="DialogContent"><Dialog.Title className="DialogTitle">Edit profile</Dialog.Title><Dialog.Description className="DialogDescription">Make changes to your profile here. Click save when you're done.</Dialog.Description><fieldset className="Fieldset"><label className="Label" htmlFor="name">Name</label><input className="Input" id="name" defaultValue="Pedro Duarte" /></fieldset><fieldset className="Fieldset"><label className="Label" htmlFor="username">Username</label><input className="Input" id="username" defaultValue="@peduarte" /></fieldset><div style={{ display: 'flex', marginTop: 25, justifyContent: 'flex-end' }}><Dialog.Close asChild><button className="Button green">Save changes</button></Dialog.Close></div><Dialog.Close asChild><button className="IconButton" aria-label="Close"><Cross2Icon /></button></Dialog.Close></Dialog.Content></Dialog.Portal></Dialog.Root>);export default DialogDemo;
モーダルモードと非モーダルモードをサポートします。
モーダルの場合、フォーカスは自動的にトラップされます。
制御型または非制御型にできます。
スクリーンリーダーによるアナウンスをTitle
および Description
コンポーネントで管理します。
Escキーでコンポーネントを自動的に閉じます。
コマンドラインからコンポーネントをインストールします。
すべてのパーツをインポートして組み合わせます。
ダイアログのすべてのパーツを含みます。
ダイアログを開くボタン。
使用すると、オーバーレイとコンテンツパーツがbody
にポータルされます。
ダイアログが開いているときに、ビューの操作できない部分を覆うレイヤー。
開いているダイアログに表示されるコンテンツを含みます。
ダイアログを閉じるボタン。
ダイアログが開いたときにアナウンスされるアクセシブルなタイトル。
タイトルを隠したい場合は、視覚的に隠すユーティリティで次のようにラップします:<VisuallyHidden asChild>
。
ダイアログが開いたときにアナウンスされる、オプションのアクセシブルな説明。
説明を隠したい場合は、視覚的に隠すユーティリティで次のようにラップします:<VisuallyHidden asChild>
。説明を完全に削除したい場合は、この部分を削除し、aria-describedby={undefined}
を Dialog.Content
に渡します。
制御されたプロパティを使用して、非同期操作が完了した後、プログラムでダイアログを閉じます。
コンテンツをオーバーレイ内に移動して、オーバーフロー付きのダイアログをレンダリングします。
ダイアログがポータルされる要素をカスタマイズします。
Dialog WAI-ARIA デザインパターン に準拠しています。
プリミティブな部分を独自のコンポーネントに抽象化することで、独自の API を作成できます。
この例では、Dialog.Overlay
と Dialog.Close
の部分を抽象化します。