your personal website on atproto - mirror blento.app

move qr modal to shift click on desktop

+10 -9
+1 -1
.gitignore
··· 22 22 vite.config.js.timestamp-* 23 23 vite.config.ts.timestamp-* 24 24 25 - react-grid-layout 25 + references
+9 -8
src/lib/components/qr/qrOverlay.svelte.ts
··· 23 23 return params.href || (node as HTMLAnchorElement).href || ''; 24 24 } 25 25 26 - function startLongPress() { 26 + function startLongPress(e: PointerEvent) { 27 27 if (params.disabled) return; 28 + // Only start long press for primary button (touch/left-click), not right-click 29 + if (e.button !== 0) return; 28 30 isLongPress = false; 29 31 longPressTimer = setTimeout(() => { 30 32 isLongPress = true; ··· 43 45 if (isLongPress) { 44 46 e.preventDefault(); 45 47 isLongPress = false; 48 + return; 46 49 } 47 - } 48 50 49 - function handleContextMenu(e: MouseEvent) { 50 - if (params.disabled) return; 51 - e.preventDefault(); 52 - openModal?.(getHref(), params.context ?? {}); 51 + // Shift-click opens QR modal 52 + if (e.shiftKey && !params.disabled) { 53 + e.preventDefault(); 54 + openModal?.(getHref(), params.context ?? {}); 55 + } 53 56 } 54 57 55 58 node.addEventListener('pointerdown', startLongPress); ··· 57 60 node.addEventListener('pointercancel', cancelLongPress); 58 61 node.addEventListener('pointerleave', cancelLongPress); 59 62 node.addEventListener('click', handleClick); 60 - node.addEventListener('contextmenu', handleContextMenu); 61 63 62 64 return { 63 65 update(newParams: { href?: string; context?: QRContext; disabled?: boolean }) { ··· 69 71 node.removeEventListener('pointercancel', cancelLongPress); 70 72 node.removeEventListener('pointerleave', cancelLongPress); 71 73 node.removeEventListener('click', handleClick); 72 - node.removeEventListener('contextmenu', handleContextMenu); 73 74 cancelLongPress(); 74 75 } 75 76 };