Skip to content

Commit 4968173

Browse files
authored
Fix aria-expanded state for sidenav and expansion list entries (#11812)
This also fixes collapsing the expansion list entries on the [Design patterns page](https://docs.flutter.dev/app-architecture/design-patterns). Fixes #11811
1 parent 99ee954 commit 4968173

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

src/_includes/expansion-list.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<div class="expansion-panel">
2424
<a class="{{class}} collapsible"
2525
data-toggle="collapse"
26+
data-target="#{{id}}"
2627
href="#{{id}}"
2728
role="button"
2829
aria-expanded="{{expanded}}"
@@ -32,7 +33,7 @@
3233
{%- if item.data.iconPath %}
3334
<img src="{{item.data.iconPath}}" alt="An icon showing a generic application." />
3435
{%- else %}
35-
<img src="/assets/images/docs/app-architecture/design-patterns/kv-store-icon.svg" alt="A ivon showing a generic application." />
36+
<img src="/assets/images/docs/app-architecture/design-patterns/kv-store-icon.svg" alt="A icon showing a generic application." />
3637
{%- endif %}
3738

3839
</div>

src/_sass/components/_expansion-list.scss

+5
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
}
113113

114114
.expansion-panel-body {
115+
display: none;
115116
margin: auto;
116117
width: 90%;
117118
border-top: .05rem solid rgba(0, 0, 0, 0.125);
@@ -125,6 +126,10 @@
125126
margin-top: 1.5rem;
126127
border-top: .05rem solid rgba(0, 0, 0, 0.125);
127128
}
129+
130+
&.show {
131+
display: block;
132+
}
128133
}
129134

130135
> :last-child {

src/_sass/components/_sidebar.scss

+4-4
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@
120120

121121
+ ul {
122122
display: none;
123+
124+
&.show {
125+
display: block;
126+
}
123127
}
124128

125129
&:hover {
@@ -134,10 +138,6 @@
134138
.expander {
135139
transform: rotate(180deg);
136140
}
137-
138-
+ ul {
139-
display: block;
140-
}
141141
}
142142

143143
&.active {

src/content/assets/js/main.js

+21-3
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,29 @@ function setupSidenavInteractivity() {
1717
}
1818
}
1919
});
20+
}
2021

21-
// Set up collapse and expand for sidenav buttons.
22-
const toggles = document.querySelectorAll('.nav-link.collapsible');
22+
function setupCollapsibleElements() {
23+
const toggles = document.querySelectorAll('[data-toggle="collapse"]');
2324
toggles.forEach(function (toggle) {
25+
const targetSelector = toggle.getAttribute('data-target');
26+
if (!targetSelector) return;
27+
const target = document.querySelector(targetSelector);
28+
if (!target) return;
29+
2430
toggle.addEventListener('click', (e) => {
25-
toggle.classList.toggle('collapsed');
31+
if (toggle.classList.contains('collapsed')) {
32+
toggle.classList.remove('collapsed');
33+
toggle.ariaExpanded = 'true';
34+
35+
target.classList.add('show');
36+
} else {
37+
toggle.classList.add('collapsed');
38+
toggle.ariaExpanded = 'false';
39+
40+
target.classList.remove('show');
41+
}
42+
2643
e.preventDefault();
2744
});
2845
});
@@ -433,6 +450,7 @@ function setupSite() {
433450

434451
setupToc();
435452
setupPlatformKeys();
453+
setupCollapsibleElements();
436454
setupFeedback();
437455
}
438456

0 commit comments

Comments
 (0)