openvibers/openvibe.live Commits

Channel chat and the player's diagnostics scroll from the keyboard (axe scrollable-region-focusable) (#322)

OP OpenVibers committed 21 days ago · 9080dca482 · 3 files, +4 −2

Changes

ddiff --git a/public/css/style.css b/public/css/style.css
iindex 0ba4f0b7..0bba291b 100644
---- a/public/css/style.css
++++ b/public/css/style.css
@@@ -3331,6 +3331,8 @@ a.pulse-card:hover { border-color: var(--accent); transform: translateY(-2px); }
touch-action: pan-y;
scrollbar-gutter: stable;
}
++/* The list takes keyboard focus so it scrolls without a mouse (axe scrollable-region-focusable); the ring sits inside it. */
++.chat-messages:focus-visible { outline: 2px solid var(--accent-light, var(--accent)); outline-offset: -2px; }
.chat-msg {
font-size: 0.85rem; line-height: 1.4;
padding: 2px 0; word-break: break-word;
ddiff --git a/public/fragments/channel.html b/public/fragments/channel.html
iindex b1073bae..acfcc87e 100644
---- a/public/fragments/channel.html
++++ b/public/fragments/channel.html
@@@ -154,7 +154,7 @@
</div>
<div class="chat-users-panel"></div>
<div class="ch-goal-widget" id="ch-goal-widget" style="display:none"></div>
-- <div class="chat-messages" id="chat-messages"></div>
++ <div class="chat-messages" id="chat-messages" role="region" aria-label="Chat messages" tabindex="0"></div>
<div class="chat-input-area">
<!-- Emote Picker -->
<div id="emote-picker" class="emote-picker" style="display:none">
ddiff --git a/public/js/stream-player.js b/public/js/stream-player.js
iindex d250e9a4..59bfe4ae 100644
---- a/public/js/stream-player.js
++++ b/public/js/stream-player.js
@@@ -425,7 +425,7 @@ function _ensurePlayerLoaderStructure(placeholder) {
</div>
<details class="player-loader-diagnostics">
<summary>Technical details</summary>
-- <pre></pre>
++ <pre tabindex="0"></pre>
</details>
</div>
</div>