Skip to content

Commit 882e02d

Browse files
committed
feature #150 Made the configuration block tabs accessible (javiereguiluz)
This PR was squashed before being merged into the main branch. Discussion ---------- Made the configuration block tabs accessible This changes the generated HTML of `configuration-block` directive to make it fully accessible. I followed the https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-manual/ recommendations that we also applied recently to Symfony Profiler. Commits ------- 4b0885f Made the configuration block tabs accessible
2 parents 9d4cb70 + 4b0885f commit 882e02d

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

src/Directive/ConfigurationBlockDirective.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public function processSub(Parser $parser, ?Node $document, string $variable, st
5454
$language = $node->getLanguage() ?? 'Unknown';
5555

5656
$blocks[] = [
57+
'hash' => hash('sha1', $node->getValue()),
5758
'language_label' => self::LANGUAGE_LABELS[$language] ?? ucfirst(str_replace('-', ' ', $language)),
5859
'language' => $language,
5960
'code' => $node->render(),
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<div class="configuration-block">
2-
<ul class="configuration-tabs configuration-tabs-length-{{ blocks|length }}">
2+
<div role="tablist" aria-label="Configuration formats" class="configuration-tabs configuration-tabs-length-{{ blocks|length }}">
33
{% for block in blocks %}
4-
<li data-language="{{ block.language }}" {{ loop.first ? 'data-active="true"' }}>
4+
<button role="tab" type="button" data-language="{{ block.language }}"
5+
aria-controls="{{ 'configuration-block-tabpanel-' ~ block.hash }}" aria-selected="{{ loop.first ? 'true' : 'false' }}"
6+
{{ loop.first ? 'data-active="true"' }} {{ not loop.first ? 'tabindex="-1"' }}>
57
<span>{{ block.language_label }}</span>
6-
</li>
8+
</button>
79
{% endfor %}
8-
</ul>
10+
</div>
911

1012
{% for block in blocks %}
11-
<div class="configuration-codeblock" data-language="{{ block.language }}" style="{{ not loop.first ? 'display: none' }}">
13+
<div role="tabpanel" id="{{ 'configuration-block-tabpanel-' ~ block.hash }}" aria-label="{{ block.language_label }}" class="configuration-codeblock" data-language="{{ block.language }}" style="{{ not loop.first ? 'display: none' }}">
1214
{{ block.code|raw }}
1315
</div>
1416
{% endfor %}

tests/fixtures/expected/blocks/directives/configuration-block.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
<div class="configuration-block">
2-
<ul class="configuration-tabs configuration-tabs-length-2">
3-
<li data-language="yaml" data-active="true"> <span>YAML</span> </li>
4-
<li data-language="php" > <span>PHP</span> </li>
5-
</ul>
6-
<div class="configuration-codeblock" data-language="yaml" style="">
2+
<div role="tablist" aria-label="Configuration formats" class="configuration-tabs configuration-tabs-length-2">
3+
<button role="tab" type="button" data-language="yaml" aria-controls="configuration-block-tabpanel-5c4d43ebaab8414c439c1c2a1cd2ec14602f7bdc" aria-selected="true" data-active="true"> <span>YAML</span> </button>
4+
<button role="tab" type="button" data-language="php" aria-controls="configuration-block-tabpanel-4c07f6d0afcdafed7d2e707ad137654bcfedb8db" aria-selected="false" tabindex="-1"> <span>PHP</span> </button>
5+
</div>
6+
7+
<div role="tabpanel" id="configuration-block-tabpanel-5c4d43ebaab8414c439c1c2a1cd2ec14602f7bdc" aria-label="YAML" class="configuration-codeblock" data-language="yaml" style>
78
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-yaml">
89
<div class="codeblock-scroll">
910
<pre class="codeblock-lines">1</pre>
1011
<pre class="codeblock-code"><code><span class="hljs-comment"># app/config/services.yml</span></code></pre>
1112
</div>
1213
</div>
1314
</div>
14-
<div class="configuration-codeblock" data-language="php" style="display: none">
15+
16+
<div role="tabpanel" id="configuration-block-tabpanel-4c07f6d0afcdafed7d2e707ad137654bcfedb8db" aria-label="PHP" class="configuration-codeblock" data-language="php" style="display: none">
1517
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php">
1618
<div class="codeblock-scroll">
1719
<pre class="codeblock-lines">1</pre>

0 commit comments

Comments
 (0)