fix dropdown trigger props, add onClose alias to sidebar

This commit is contained in:
Justin Edmund 2025-11-30 06:02:50 -08:00
parent fcc0a884f5
commit 66b03c9108
2 changed files with 16 additions and 5 deletions

View file

@ -2,8 +2,12 @@
import { DropdownMenu as DropdownMenuBase } from 'bits-ui'
import type { Snippet } from 'svelte'
interface TriggerProps {
props: Record<string, unknown>
}
interface DropdownMenuProps {
trigger: Snippet
trigger: Snippet<[TriggerProps]>
menu: Snippet
open?: boolean
}
@ -13,7 +17,9 @@
<DropdownMenuBase.Root bind:open>
<DropdownMenuBase.Trigger>
{@render trigger()}
{#snippet child({ props })}
{@render trigger({ props })}
{/snippet}
</DropdownMenuBase.Trigger>
<DropdownMenuBase.Portal>

View file

@ -10,7 +10,9 @@
open?: boolean
/** Title for the sidebar header */
title?: string
/** Callback when close is requested */
/** Callback when close is requested (camelCase preferred) */
onClose?: () => void
/** Callback when close is requested (lowercase, deprecated - use onClose) */
onclose?: () => void
/** Content to render in the sidebar */
children?: Snippet
@ -20,12 +22,15 @@
scrollable?: boolean
}
const { open = false, title, onclose, children, headerActions, scrollable = true }: Props = $props()
const { open = false, title, onClose, onclose, children, headerActions, scrollable = true }: Props = $props()
// Support both onClose (camelCase) and onclose (lowercase) for backward compatibility
const handleClose = $derived(onClose ?? onclose)
</script>
<aside class="sidebar" class:open style:--sidebar-width={SIDEBAR_WIDTH}>
{#if title}
<SidebarHeader {title} {onclose} actions={headerActions} />
<SidebarHeader {title} onclose={handleClose} actions={headerActions} />
{/if}
<div class="sidebar-content" class:scrollable>