Drawer
Drawer
は、画面の端から表示されるパネルのコンポーネントです。
Drawer
は、アクセシビリティに関してWAI-ARIA Dialog (Modal) Patternに従います。
- モーダルが開くと、自動的にモーダル内の最初の無効ではない要素または
initialFocusRef
で設定された要素にフォーカスされます。 - モーダルが閉じると、モーダルが開く前にフォーカスされていた要素または
finalFocusRef
で設定された要素にフォーカスされます。 - モーダルのオーバーレイをクリックすると、モーダルを閉じます。
- モーダルの背後にある要素はスクロールがブロックされます。
モーダルを開くトリガーとなる要素にaria-haspopup="dialog"
を設定すると、スクリーンリーダーがダイアログを開くことをユーザーに伝えることができます。
const { isOpen, onOpen, onClose } = useDisclosure()return (<><Button aria-haspopup="dialog" onClick={onOpen}>Open Drawer</Button><Drawer isOpen={isOpen} onClose={onClose}><DrawerHeader>ドラゴンボール</DrawerHeader><DrawerBody>『ドラゴンボール』は、鳥山明による日本の漫画作品です。...</DrawerBody><DrawerFooter><Button variant="ghost" onClick={onClose}>とじる</Button><Button colorScheme="primary">Wikipedia</Button></DrawerFooter></Drawer></>)
キーボード操作
モーダルが開くと、フォーカスはモーダル内にロックされます。つまり、モーダルを閉じない限り、モーダル外の要素をフォーカスすることはできません。
キー | 説明 | 状態 |
---|---|---|
Tab | モーダル内の無効ではない次の要素にフォーカスします。最後の要素の場合は最初の無効ではない要素をフォーカスします。 | isOpen={true} |
Shift + Tab | モーダル内の前の無効ではない要素をフォーカスします。最初の要素の場合は最後の無効ではない要素をフォーカスします。 | isOpen={true} |
Escape | モーダルを閉じます。 | isOpen={true} + closeOnEsc={true} |
ARIAロールと属性
コンポーネント | ロールと属性 | 使い方 |
---|---|---|
Drawer | role="dialog" | ダイアログであることを示します。 |
aria-modal="true" | 表示されているウィジェットがモーダルであることを示します。 | |
aria-labelledby | 関連したDrawerHeader のid を設定します。 | |
aria-describedby | 関連したDrawerBody のid を設定します。 | |
DrawerOverlay | aria-hidden="true" | 要素をアクセシビリティツリーから除外します。 |
DrawerCloseButton | aria-label="Close modal" | "Close modal" を設定します。 |
DrawerHeader | id | Drawer と関連付けるために使用するid 。 |
DrawerBody | id | Drawer と関連付けるために使用するid 。 |
GitHubでこのページを編集する