Dialog
Dialogは、ユーザーに実行の確認または中断に使用されるコンポーネントです。
Dialogは、アクセシビリティに関してWAI-ARIA Dialog (Modal) Patternに従います。
- ダイアログが開くと、自動的にダイアログ内の最初の無効ではない要素または
initialFocusRefで設定された要素にフォーカスされます。 - ダイアログが閉じると、ダイアログが開く前にフォーカスされていた要素または
finalFocusRefで設定された要素にフォーカスされます。 - ダイアログのオーバーレイをクリックすると、ダイアログを閉じます。
- ダイアログの背後にある要素はスクロールがブロックされます。
ダイアログを開くトリガーとなる要素にaria-haspopup="dialog"を設定すると、スクリーンリーダーがダイアログを開くことをユーザーに伝えることができます。
const { isOpen, onOpen, onClose } = useDisclosure()return (<><Button aria-haspopup="dialog" onClick={onOpen}>Open Dialog</Button><DialogisOpen={isOpen}onClose={onClose}header="孫悟空"cancel="わけない"onCancel={onClose}success="わける"onSuccess={onClose}>だ…大地よ海よ そして生きているすべての みんな…このオラにほんのちょっとずつだけ元気をわけてくれ…!!!</Dialog></>)
キーボード操作
ダイアログが開くと、フォーカスはダイアログ内にロックされます。つまり、ダイアログを閉じない限り、ダイアログ外の要素をフォーカスすることはできません。
| キー | 説明 | 状態 |
|---|---|---|
Tab | ダイアログ内の無効ではない次の要素にフォーカスします。最後の要素の場合は最初の無効ではない要素をフォーカスします。 | isOpen={true} |
Shift + Tab | ダイアログ内の前の無効ではない要素をフォーカスします。最初の要素の場合は最後の無効ではない要素をフォーカスします。 | isOpen={true} |
Escape | ダイアログを閉じます。 | isOpen={true} + closeOnEsc={true} |
ARIAロールと属性
| コンポーネント | ロールと属性 | 使い方 |
|---|---|---|
Dialog | role="dialog" | ダイアログであることを示します。 |
aria-modal="true" | 表示されているウィジェットがモーダルであることを示します。 | |
aria-labelledby | 関連したDialogHeaderのidを設定します。 | |
aria-describedby | 関連したDialogBodyのidを設定します。 | |
DialogOverlay | aria-hidden="true" | 要素をアクセシビリティツリーから除外します。 |
DialogCloseButton | aria-label="Close dialog" | "Close dialog"を設定します。 |
DialogHeader | id | Dialogと関連付けるために使用するid。 |
DialogBody | id | Dialogと関連付けるために使用するid。 |
GitHubでこのページを編集する

