openvibers/openvibe.live Commits
Channel chat and the player's diagnostics scroll from the keyboard (axe scrollable-region-focusable) (#322)
Changes
@@@ -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;@@@ -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">@@@ -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>
@@ -3331,6 +3331,8 @@ a.pulse-card:hover { border-color: var(--accent); transform: translateY(-2px); }
@@ -3331,6 +3331,8 @@ a.pulse-card:hover { border-color: var(--accent); transform: translateY(-2px); }
touch-action: pan-y;
touch-action: pan-y;
scrollbar-gutter: stable;
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 {
.chat-msg {
font-size: 0.85rem; line-height: 1.4;
font-size: 0.85rem; line-height: 1.4;
padding: 2px 0; word-break: break-word;
padding: 2px 0; word-break: break-word;
@@ -154,7 +154,7 @@
@@ -154,7 +154,7 @@
</div>
</div>
<div class="chat-users-panel"></div>
<div class="chat-users-panel"></div>
<div class="ch-goal-widget" id="ch-goal-widget" style="display:none"></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">
<div class="chat-input-area">
<!-- Emote Picker -->
<!-- Emote Picker -->
<div id="emote-picker" class="emote-picker" style="display:none">
<div id="emote-picker" class="emote-picker" style="display:none">
@@ -425,7 +425,7 @@ function _ensurePlayerLoaderStructure(placeholder) {
@@ -425,7 +425,7 @@ function _ensurePlayerLoaderStructure(placeholder) {
</div>
</div>
<details class="player-loader-diagnostics">
<details class="player-loader-diagnostics">
<summary>Technical details</summary>
<summary>Technical details</summary>
- <pre></pre>
+ <pre tabindex="0"></pre>
</details>
</details>
</div>
</div>
</div>
</div>