Compare commits

..

No commits in common. "7de560f44c30faa674d2f6dfca551d799df9e21b" and "0132c96a7f0e1b14d941c80bd0d8501104fd6e6d" have entirely different histories.

5 changed files with 30 additions and 17 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "twitch-vod-manager", "name": "twitch-vod-manager",
"version": "4.6.120", "version": "4.6.119",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "twitch-vod-manager", "name": "twitch-vod-manager",
"version": "4.6.120", "version": "4.6.119",
"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.120", "version": "4.6.119",
"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

@ -185,12 +185,12 @@ function showQueueContextMenu(x: number, y: number, item: QueueItem): void {
closeQueueContextMenu(); closeQueueContextMenu();
const menu = document.createElement('div'); const menu = document.createElement('div');
menu.className = 'context-menu'; menu.className = 'queue-context-menu';
const makeItem = (label: string, onClick: () => void, disabled = false): HTMLElement => { const makeItem = (label: string, onClick: () => void, disabled = false): HTMLElement => {
const el = document.createElement('div'); const el = document.createElement('div');
el.textContent = label; el.textContent = label;
el.className = 'context-menu-item' + (disabled ? ' disabled' : ''); el.className = 'queue-context-menu-item' + (disabled ? ' disabled' : '');
if (!disabled) { if (!disabled) {
el.addEventListener('click', () => { el.addEventListener('click', () => {
try { onClick(); } finally { closeQueueContextMenu(); } try { onClick(); } finally { closeQueueContextMenu(); }
@ -201,7 +201,7 @@ function showQueueContextMenu(x: number, y: number, item: QueueItem): void {
const makeSeparator = (): HTMLElement => { const makeSeparator = (): HTMLElement => {
const sep = document.createElement('div'); const sep = document.createElement('div');
sep.className = 'context-menu-separator'; sep.className = 'queue-context-menu-separator';
return sep; return sep;
}; };

View File

@ -924,7 +924,15 @@ function showVodContextMenu(x: number, y: number, ctx: VodCardContext): void {
closeVodContextMenu(); closeVodContextMenu();
const menu = document.createElement('div'); const menu = document.createElement('div');
menu.className = 'context-menu'; menu.className = 'vod-context-menu';
menu.style.position = 'fixed';
menu.style.zIndex = '9999';
menu.style.background = 'var(--bg-card)';
menu.style.border = '1px solid var(--border-soft)';
menu.style.borderRadius = '6px';
menu.style.boxShadow = '0 4px 12px rgba(0,0,0,0.4)';
menu.style.padding = '4px';
menu.style.minWidth = '200px';
const downloadedIds = new Set( const downloadedIds = new Set(
Array.isArray(config.downloaded_vod_ids) Array.isArray(config.downloaded_vod_ids)
@ -936,7 +944,13 @@ function showVodContextMenu(x: number, y: number, ctx: VodCardContext): void {
const makeItem = (label: string, onClick: () => void): HTMLElement => { const makeItem = (label: string, onClick: () => void): HTMLElement => {
const el = document.createElement('div'); const el = document.createElement('div');
el.textContent = label; el.textContent = label;
el.className = 'context-menu-item'; el.style.padding = '8px 12px';
el.style.cursor = 'pointer';
el.style.fontSize = '13px';
el.style.color = 'var(--text)';
el.style.borderRadius = '4px';
el.addEventListener('mouseenter', () => { el.style.background = 'rgba(145,70,255,0.15)'; });
el.addEventListener('mouseleave', () => { el.style.background = 'transparent'; });
el.addEventListener('click', () => { el.addEventListener('click', () => {
try { onClick(); } finally { closeVodContextMenu(); } try { onClick(); } finally { closeVodContextMenu(); }
}); });

View File

@ -4411,12 +4411,11 @@ input[type="number"]::-webkit-outer-spin-button {
} }
/* ============================================ /* ============================================
CONTEXT MENU generic right-click menu base QUEUE CONTEXT MENU right-click on a queue row
============================================ ============================================
Used by both the queue row context menu (renderer-queue.ts) and the Previously every property was inline-styled in renderer-queue.ts.
VOD card context menu (renderer-streamers.ts). left/top stay inline left/top stay inline (set per-click); everything else lives here. */
on the container (set per-click); everything else lives here. */ .queue-context-menu {
.context-menu {
position: fixed; position: fixed;
z-index: 9999; z-index: 9999;
background: var(--bg-card); background: var(--bg-card);
@ -4427,7 +4426,7 @@ input[type="number"]::-webkit-outer-spin-button {
min-width: 200px; min-width: 200px;
} }
.context-menu-item { .queue-context-menu-item {
padding: 8px 12px; padding: 8px 12px;
cursor: pointer; cursor: pointer;
font-size: 13px; font-size: 13px;
@ -4436,17 +4435,17 @@ input[type="number"]::-webkit-outer-spin-button {
transition: background 0.12s; transition: background 0.12s;
} }
.context-menu-item:hover:not(.disabled) { .queue-context-menu-item:hover:not(.disabled) {
background: rgba(145, 70, 255, 0.15); background: rgba(145, 70, 255, 0.15);
} }
.context-menu-item.disabled { .queue-context-menu-item.disabled {
color: var(--text-secondary); color: var(--text-secondary);
opacity: 0.55; opacity: 0.55;
cursor: not-allowed; cursor: not-allowed;
} }
.context-menu-separator { .queue-context-menu-separator {
height: 1px; height: 1px;
margin: 4px 6px; margin: 4px 6px;
background: var(--border-soft); background: var(--border-soft);