Stage 17 #5: make the active-row chevron open the game (not a no-op)
CI / changes (pull_request) Successful in 1s
CI / unit (pull_request) Successful in 8s
CI / integration (pull_request) Successful in 11s
CI / ui (pull_request) Successful in 36s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m5s

Owner review: the '>' on an active game row should be a real tap target that opens
the game, like the rest of the row — not inert. The chevron now navigates (kept out
of the tab order / a11y tree since the row's main button already does the same), and
active-row swipes no longer suppress the tap. Adds an e2e for the chevron navigation.
This commit is contained in:
Ilia Denisov
2026-06-09 00:39:54 +02:00
parent 4999478ded
commit 13361c098c
2 changed files with 17 additions and 3 deletions
+10 -3
View File
@@ -79,9 +79,11 @@
if (!drag) return;
const dx = e.clientX - drag.x0;
const dy = e.clientY - drag.y0;
if (Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy) * 1.4) {
// Only a finished row reveals on a horizontal swipe; that swipe then suppresses the tap so it
// does not also open the game. Active rows ignore swipes and stay plain tap-to-open.
if (finished && Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy) * 1.4) {
swiped = true;
revealedId = dx < 0 && finished ? drag.id : null;
revealedId = dx < 0 ? drag.id : null;
}
drag = null;
}
@@ -207,7 +209,9 @@
{#if group.finished}
<button class="kebab" onclick={() => toggleReveal(g.id)} aria-label={t('lobby.hideGame')}></button>
{:else}
<span class="chev" aria-hidden="true"></span>
<!-- A visual duplicate of the row's tap target: opens the game on tap, but kept out
of the tab order / a11y tree since the .open button already does the same. -->
<button class="chev" onclick={() => openGame(g)} tabindex={-1} aria-hidden="true"></button>
{/if}
</div>
</div>
@@ -341,6 +345,9 @@
.chev {
flex: 0 0 auto;
width: 30px;
padding: 10px 0;
border: none;
background: none;
text-align: center;
color: var(--text-muted);
font-size: 1.4rem;