Skip to content

Commit 53d6e18

Browse files
committed
fix(a11y): aria-controls and role fixes
1 parent 9105984 commit 53d6e18

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

quartz/components/Explorer.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ export type FolderState = {
5555
collapsed: boolean
5656
}
5757

58+
let numExplorers = 0
5859
export default ((userOpts?: Partial<Options>) => {
5960
const opts: Options = { ...defaultOptions, ...userOpts }
6061
const { OverflowList, overflowListAfterDOMLoaded } = OverflowListFactory()
6162

6263
const Explorer: QuartzComponent = ({ cfg, displayClass }: QuartzComponentProps) => {
64+
const id = `explorer-${numExplorers++}`
65+
6366
return (
6467
<div
6568
class={classNames(displayClass, "explorer")}
@@ -77,7 +80,7 @@ export default ((userOpts?: Partial<Options>) => {
7780
type="button"
7881
class="explorer-toggle mobile-explorer hide-until-loaded"
7982
data-mobile={true}
80-
aria-controls="explorer-content"
83+
aria-controls={id}
8184
>
8285
<svg
8386
xmlns="http://www.w3.org/2000/svg"
@@ -116,7 +119,7 @@ export default ((userOpts?: Partial<Options>) => {
116119
<polyline points="6 9 12 15 18 9"></polyline>
117120
</svg>
118121
</button>
119-
<div class="explorer-content" aria-expanded={false}>
122+
<div id={id} class="explorer-content" aria-expanded={false} role="group">
120123
<OverflowList class="explorer-ul" />
121124
</div>
122125
<template id="template-file">

quartz/components/OverflowList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ const OverflowList = ({
1212
)
1313
}
1414

15-
let numExplorers = 0
15+
let numLists = 0
1616
export default () => {
17-
const id = `list-${numExplorers++}`
17+
const id = `list-${numLists++}`
1818

1919
return {
2020
OverflowList: (props: JSX.HTMLAttributes<HTMLUListElement>) => (

quartz/components/TableOfContents.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const defaultOptions: Options = {
1717
layout: "modern",
1818
}
1919

20+
let numTocs = 0
2021
export default ((opts?: Partial<Options>) => {
2122
const layout = opts?.layout ?? defaultOptions.layout
2223
const { OverflowList, overflowListAfterDOMLoaded } = OverflowListFactory()
@@ -29,12 +30,13 @@ export default ((opts?: Partial<Options>) => {
2930
return null
3031
}
3132

33+
const id = `toc-${numTocs++}`
3234
return (
3335
<div class={classNames(displayClass, "toc")}>
3436
<button
3537
type="button"
3638
class={fileData.collapseToc ? "collapsed toc-header" : "toc-header"}
37-
aria-controls="toc-content"
39+
aria-controls={id}
3840
aria-expanded={!fileData.collapseToc}
3941
>
4042
<h3>{i18n(cfg.locale).components.tableOfContents.title}</h3>
@@ -53,7 +55,10 @@ export default ((opts?: Partial<Options>) => {
5355
<polyline points="6 9 12 15 18 9"></polyline>
5456
</svg>
5557
</button>
56-
<OverflowList class={fileData.collapseToc ? "collapsed toc-content" : "toc-content"}>
58+
<OverflowList
59+
id={id}
60+
class={fileData.collapseToc ? "collapsed toc-content" : "toc-content"}
61+
>
5762
{fileData.toc.map((tocEntry) => (
5863
<li key={tocEntry.slug} class={`depth-${tocEntry.depth}`}>
5964
<a href={`#${tocEntry.slug}`} data-for={tocEntry.slug}>

0 commit comments

Comments
 (0)