Compare commits

..

No commits in common. "6086cd51c1fabe554ab74f39af37917b0b11e6f4" and "5f7ce3684516402a99115f10d956ae03006fc2b2" have entirely different histories.

7 changed files with 7 additions and 27 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "twitch-vod-manager", "name": "twitch-vod-manager",
"version": "4.6.50", "version": "4.6.49",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "twitch-vod-manager", "name": "twitch-vod-manager",
"version": "4.6.50", "version": "4.6.49",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"axios": "^1.6.0", "axios": "^1.6.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "twitch-vod-manager", "name": "twitch-vod-manager",
"version": "4.6.50", "version": "4.6.49",
"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",

View File

@ -356,8 +356,7 @@ const UI_TEXT_DE = {
autoRecordScanEmpty: 'Manueller Scan: kein Streamer ist gerade live.', autoRecordScanEmpty: 'Manueller Scan: kein Streamer ist gerade live.',
liveNowTooltip: 'Aktuell live auf Twitch', liveNowTooltip: 'Aktuell live auf Twitch',
modalCloseAria: 'Dialog schliessen', modalCloseAria: 'Dialog schliessen',
sidebarEmpty: 'Noch keine Streamer. Fuege oben rechts einen hinzu.', sidebarEmpty: 'Noch keine Streamer. Fuege oben rechts einen hinzu.'
removeAria: 'Entfernen'
}, },
vods: { vods: {
noneTitle: 'Keine VODs', noneTitle: 'Keine VODs',

View File

@ -356,8 +356,7 @@ const UI_TEXT_EN = {
autoRecordScanEmpty: 'Manual scan: no streamers currently live.', autoRecordScanEmpty: 'Manual scan: no streamers currently live.',
liveNowTooltip: 'Currently live on Twitch', liveNowTooltip: 'Currently live on Twitch',
modalCloseAria: 'Close dialog', modalCloseAria: 'Close dialog',
sidebarEmpty: 'No streamers yet. Add one via the input at the top right.', sidebarEmpty: 'No streamers yet. Add one via the input at the top right.'
removeAria: 'Remove'
}, },
vods: { vods: {
noneTitle: 'No VODs', noneTitle: 'No VODs',

View File

@ -572,7 +572,7 @@ function renderQueue(): void {
</div> </div>
</div> </div>
${item.status === 'error' ? `<button class="queue-retry-btn" title="${escapeHtml(UI_TEXT.queue.retryItem)}" onclick="retryQueueItem('${item.id}')">&#x21bb;</button>` : ''} ${item.status === 'error' ? `<button class="queue-retry-btn" title="${escapeHtml(UI_TEXT.queue.retryItem)}" onclick="retryQueueItem('${item.id}')">&#x21bb;</button>` : ''}
<span class="remove" role="button" tabindex="0" aria-label="${escapeHtml(UI_TEXT.streamers.removeAria)}" onclick="removeFromQueue('${item.id}')" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();removeFromQueue('${item.id}');}">x</span> <span class="remove" onclick="removeFromQueue('${item.id}')">x</span>
</div> </div>
`; `;
}).join(''); }).join('');

View File

@ -525,20 +525,10 @@ function renderStreamers(): void {
const removeSpan = document.createElement('span'); const removeSpan = document.createElement('span');
removeSpan.className = 'remove'; removeSpan.className = 'remove';
removeSpan.textContent = 'x'; removeSpan.textContent = 'x';
removeSpan.setAttribute('role', 'button');
removeSpan.setAttribute('tabindex', '0');
removeSpan.setAttribute('aria-label', UI_TEXT.streamers.removeAria);
removeSpan.addEventListener('click', (e) => { removeSpan.addEventListener('click', (e) => {
e.stopPropagation(); e.stopPropagation();
void removeStreamer(streamer); void removeStreamer(streamer);
}); });
removeSpan.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
e.stopPropagation();
void removeStreamer(streamer);
}
});
item.append(nameSpan, autoBtn, vodBtn, recBtn, removeSpan); item.append(nameSpan, autoBtn, vodBtn, recBtn, removeSpan);
item.addEventListener('click', () => { item.addEventListener('click', () => {

View File

@ -443,18 +443,10 @@ body {
cursor: pointer; cursor: pointer;
} }
.streamer-item:hover .remove, .streamer-item:hover .remove {
.streamer-item .remove:focus-visible {
opacity: 1; opacity: 1;
} }
.streamer-item .remove:focus-visible,
.queue-item .remove:focus-visible {
outline: none;
box-shadow: 0 0 0 2px rgba(255, 70, 70, 0.5);
border-radius: 3px;
}
/* Live-dot red pulsing indicator shown next to a streamer's name in /* Live-dot red pulsing indicator shown next to a streamer's name in
the sidebar when they are currently broadcasting on Twitch. */ the sidebar when they are currently broadcasting on Twitch. */
.streamer-live-dot { .streamer-live-dot {