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

