Skip to content

Commit

Permalink
Fix: Add transparent menu overlay (#66)
Browse files Browse the repository at this point in the history
  • Loading branch information
huntabyte authored Aug 20, 2023
1 parent 1490652 commit 4ecd3ea
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .changeset/bright-fans-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"bits-ui": patch
---

Fix: Add transparent menu overlay
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<script lang="ts">
import Overlay from "$lib/internal/overlay.svelte";
import { melt } from "@melt-ui/svelte";
import { ctx } from "../ctx.js";
import type { Transition } from "$internal/types.js";
Expand All @@ -19,14 +21,17 @@
</script>

{#if $open}
<Overlay />
{@const builder = $menu}
{#if asChild}
<slot {builder} />
{:else if transition}
<Overlay />
<div use:melt={builder} {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
<slot {builder} />
</div>
{:else}
<Overlay />
<div use:melt={builder} {...$$restProps} on:m-keydown>
<slot {builder} />
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<script lang="ts">
import Overlay from "$lib/internal/overlay.svelte";
import { melt } from "@melt-ui/svelte";
import type { Transition } from "$lib/internal/types.js";
import { ctx } from "../ctx.js";
Expand All @@ -20,6 +21,7 @@

<!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
{#if $open}
<Overlay />
{@const builder = $menu}
{#if asChild}
<slot {builder} />
Expand Down
3 changes: 3 additions & 0 deletions src/lib/bits/select/components/SelectContent.svelte
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<script lang="ts">
import Overlay from "$lib/internal/overlay.svelte";
import { melt } from "@melt-ui/svelte";
import type { Transition } from "$lib/internal/types.js";
import { ctx } from "../ctx.js";
Expand All @@ -18,6 +20,7 @@
<!-- svelte-ignore a11y-no-static-element-interactions / applied by melt's builder-->

{#if $open}
<Overlay />
{@const builder = $menu}
{#if asChild}
<slot {builder} />
Expand Down
7 changes: 7 additions & 0 deletions src/lib/internal/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,10 @@ export function bitWrap<T extends object>(storeValues: T, bit: string): T {
export function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

export function styleToString(style: Record<string, number | string | undefined>): string {
return Object.keys(style).reduce((str, key) => {
if (style[key] === undefined) return str;
return str + `${key}:${style[key]};`;
}, "");
}
11 changes: 11 additions & 0 deletions src/lib/internal/overlay.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<script lang="ts">
import { styleToString } from ".";
</script>

<div
style={styleToString({
position: "fixed",
inset: 0,
"z-index": 50
})}
/>

0 comments on commit 4ecd3ea

Please sign in to comment.