Fiks BlockShell-knapper: stopPropagation forhindrer drag-capture

Minimer, maksimer og lukk-knapper ble fanget av header-dragging
pga setPointerCapture. Nå: stopPropagation på controls-div og
individuelle knapper, pluss .closest('.blockshell-controls') sjekk.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-19 02:56:48 +00:00
parent 25a543e957
commit df8b3b2f2e

View file

@ -142,9 +142,10 @@
// --- Drag (repositioning via header) --- // --- Drag (repositioning via header) ---
function handleDragStart(e: PointerEvent) { function handleDragStart(e: PointerEvent) {
// Only left button, not on buttons // Only left button, not on buttons or controls
if (e.button !== 0) return; if (e.button !== 0) return;
if ((e.target as HTMLElement).closest('button')) return; if ((e.target as HTMLElement).closest('button')) return;
if ((e.target as HTMLElement).closest('.blockshell-controls')) return;
isDragging = true; isDragging = true;
hasDragged = false; hasDragged = false;
@ -351,11 +352,12 @@
<span class="blockshell-title">{title}</span> <span class="blockshell-title">{title}</span>
</div> </div>
<div class="blockshell-controls"> <!-- svelte-ignore a11y_no_static_element_interactions -->
<div class="blockshell-controls" onpointerdown={(e) => e.stopPropagation()}>
{#if !isFullscreen} {#if !isFullscreen}
<button <button
class="blockshell-btn" class="blockshell-btn"
onclick={() => onMinimizeChange?.(!minimized)} onclick={(e) => { e.stopPropagation(); onMinimizeChange?.(!minimized); }}
title={minimized ? 'Gjenopprett' : 'Minimer'} title={minimized ? 'Gjenopprett' : 'Minimer'}
aria-label={minimized ? 'Gjenopprett panel' : 'Minimer panel'} aria-label={minimized ? 'Gjenopprett panel' : 'Minimer panel'}
> >
@ -364,7 +366,7 @@
{/if} {/if}
<button <button
class="blockshell-btn" class="blockshell-btn"
onclick={toggleFullscreen} onclick={(e) => { e.stopPropagation(); toggleFullscreen(); }}
title={isFullscreen ? 'Avslutt fullskjerm' : 'Fullskjerm'} title={isFullscreen ? 'Avslutt fullskjerm' : 'Fullskjerm'}
aria-label={isFullscreen ? 'Avslutt fullskjerm' : 'Fullskjerm'} aria-label={isFullscreen ? 'Avslutt fullskjerm' : 'Fullskjerm'}
> >
@ -373,7 +375,7 @@
{#if closable} {#if closable}
<button <button
class="blockshell-btn blockshell-btn-close" class="blockshell-btn blockshell-btn-close"
onclick={() => onClose?.()} onclick={(e) => { e.stopPropagation(); onClose?.(); }}
title="Lukk" title="Lukk"
aria-label="Lukk panel" aria-label="Lukk panel"
> >