Compare commits
2 Commits
78eeb8f3dc
...
0b99014de3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b99014de3 | ||
|
|
26b03da765 |
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.52",
|
"version": "4.6.53",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.52",
|
"version": "4.6.53",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.6.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.52",
|
"version": "4.6.53",
|
||||||
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"author": "xRangerDE",
|
"author": "xRangerDE",
|
||||||
|
|||||||
@ -465,6 +465,14 @@ function renderStreamers(): void {
|
|||||||
item.className = 'streamer-item' + (currentStreamer === streamer ? ' active' : '');
|
item.className = 'streamer-item' + (currentStreamer === streamer ? ' active' : '');
|
||||||
item.setAttribute('draggable', 'true');
|
item.setAttribute('draggable', 'true');
|
||||||
item.dataset.streamerName = streamer;
|
item.dataset.streamerName = streamer;
|
||||||
|
// Keyboard a11y for the row itself — click selects the streamer.
|
||||||
|
// Each chip inside still gets its own focus + Enter/Space wiring
|
||||||
|
// and stops propagation, so tabbing through a row lands on row
|
||||||
|
// first, then AUTO / VOD / REC / remove in order.
|
||||||
|
item.setAttribute('role', 'button');
|
||||||
|
item.setAttribute('tabindex', '0');
|
||||||
|
item.setAttribute('aria-label', streamer);
|
||||||
|
if (currentStreamer === streamer) item.setAttribute('aria-current', 'true');
|
||||||
|
|
||||||
// Live-dot — red pulsing dot when this streamer is currently
|
// Live-dot — red pulsing dot when this streamer is currently
|
||||||
// broadcasting on Twitch. Populated from the live-status batch
|
// broadcasting on Twitch. Populated from the live-status batch
|
||||||
@ -573,6 +581,16 @@ function renderStreamers(): void {
|
|||||||
if (draggedStreamerName === streamer) return;
|
if (draggedStreamerName === streamer) return;
|
||||||
void selectStreamer(streamer);
|
void selectStreamer(streamer);
|
||||||
});
|
});
|
||||||
|
item.addEventListener('keydown', (e) => {
|
||||||
|
// Activate row on Enter / Space when the row itself (not a
|
||||||
|
// chip child) is focused. The chips already preventDefault
|
||||||
|
// + stopPropagation on their own keydowns so they won't reach
|
||||||
|
// this handler.
|
||||||
|
if (e.key !== 'Enter' && e.key !== ' ') return;
|
||||||
|
if (e.target !== item) return;
|
||||||
|
e.preventDefault();
|
||||||
|
void selectStreamer(streamer);
|
||||||
|
});
|
||||||
list.appendChild(item);
|
list.appendChild(item);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -130,6 +130,11 @@ body {
|
|||||||
color: var(--text);
|
color: var(--text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.streamer-item:focus-visible {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: inset 0 0 0 2px rgba(145, 70, 255, 0.55);
|
||||||
|
}
|
||||||
|
|
||||||
.streamer-item.active {
|
.streamer-item.active {
|
||||||
background: linear-gradient(90deg, rgba(145, 71, 255, 0.28) 0%, rgba(145, 71, 255, 0.08) 100%);
|
background: linear-gradient(90deg, rgba(145, 71, 255, 0.28) 0%, rgba(145, 71, 255, 0.08) 100%);
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user