feat(frontend): open sidebar media on click, unbreak long-press menus

This commit is contained in:
hh committed 2026-08-06 15:17:25 +02:00
1 parent 12cc7d57e3
commit 004fd56f2c
5 files changed
+156 -39

No files matched your search

@@ -8,12 +8,41 @@
}
const { children, menu }: Props = $props();
type PointerHandler = (event: PointerEvent) => void;
let open = $state(false);
let suppressClick = false;
function triggerProps(props: Record<string, unknown>) {
const onpointerdown = props.onpointerdown as PointerHandler;
const onpointerup = props.onpointerup as PointerHandler;
return {
...props,
onpointerdown(event: PointerEvent) {
suppressClick = false;
event.stopPropagation();
onpointerdown(event);
},
onpointerup(event: PointerEvent) {
suppressClick = open && event.pointerType !== "mouse";
onpointerup(event);
},
onclickcapture(event: MouseEvent) {
if (suppressClick) {
suppressClick = false;
event.preventDefault();
event.stopPropagation();
}
},
};
}
</script>
<ContextMenu.Root>
<ContextMenu.Root bind:open>
<ContextMenu.Trigger>
{#snippet child({ props })}
{@render children({ props })}
{@render children({ props: triggerProps(props) })}
{/snippet}
</ContextMenu.Trigger>
<ContextMenu.Portal>