fix: menu and submenu state management.

This commit is contained in:
Darshan
2025-05-22 11:33:00 +05:30
parent 8eb4921d4e
commit e5049ede59
3 changed files with 26 additions and 12 deletions
+19 -3
View File
@@ -1,23 +1,39 @@
<script lang="ts">
import { setContext, onMount } from 'svelte';
import { Card } from '@appwrite.io/pink-svelte';
import { createMenubar, melt } from '@melt-ui/svelte';
import { menuOpen } from '$lib/components/menu/store';
import { activeMenuId, menuOpen } from '$lib/components/menu/store';
const menuId = Math.random().toString(36).slice(2);
const {
elements: { menubar },
builders: { createMenu }
} = createMenubar();
const {
elements: { trigger: trigger, menu: menu, separator: separator },
states: { open }
elements: { trigger, menu, separator },
states: { open },
builders // for submenu for same toggle state
} = createMenu();
function toggle() {
open.update((state) => !state);
}
open.subscribe((state) => {
if (state) activeMenuId.set(menuId);
else activeMenuId.update((current) => (current === menuId ? null : current));
});
onMount(() => {
return activeMenuId.subscribe((id) => {
if (id !== menuId) open.set(false);
});
});
$: menuOpen.set($open);
setContext('menuBuilder', builders);
</script>
<div use:melt={$menubar}>
+2
View File
@@ -1,3 +1,5 @@
import { writable } from 'svelte/store';
export const menuOpen = writable(false);
export const activeMenuId = writable<string | null>(null);
+5 -9
View File
@@ -1,15 +1,11 @@
<script lang="ts">
import { getContext } from 'svelte';
import { melt } from '@melt-ui/svelte';
import { Card } from '@appwrite.io/pink-svelte';
import { createMenubar, melt } from '@melt-ui/svelte';
const {
builders: { createMenu }
} = createMenubar();
const {
elements: { separator: separator },
builders: { createSubmenu: createSubmenu }
} = createMenu();
// get parent builder for toggle state!
const builders = getContext('menuBuilder');
const { createSubmenu, separator } = builders;
const {
elements: { subMenu: subMenu, subTrigger: subTrigger }