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でこのページを編集する