From f5fc11a51da145990859c6d8a25ba6d4ded82c64 Mon Sep 17 00:00:00 2001 From: Guilhem Date: Tue, 4 Feb 2025 10:52:34 +0000 Subject: [PATCH] use melt menu for FavoriteMenu and WorkspaceMenu --- .../lib/components/meltComponents/Menu.svelte | 3 +- .../components/sidebar/FavoriteMenu.svelte | 55 +++++---- .../components/sidebar/WorkspaceMenu.svelte | 106 ++++++++++-------- .../src/routes/(root)/(logged)/+layout.svelte | 35 ++++-- .../svix/create-webhook/+page@(root).svelte | 5 +- 5 files changed, 120 insertions(+), 84 deletions(-) diff --git a/frontend/src/lib/components/meltComponents/Menu.svelte b/frontend/src/lib/components/meltComponents/Menu.svelte index be1a41e6b9..a63de65874 100644 --- a/frontend/src/lib/components/meltComponents/Menu.svelte +++ b/frontend/src/lib/components/meltComponents/Menu.svelte @@ -17,7 +17,8 @@ const menu = createMenu({ positioning: { placement - } + }, + loop: true }) //Melt diff --git a/frontend/src/lib/components/sidebar/FavoriteMenu.svelte b/frontend/src/lib/components/sidebar/FavoriteMenu.svelte index 017a3dd6e8..701cb6899b 100644 --- a/frontend/src/lib/components/sidebar/FavoriteMenu.svelte +++ b/frontend/src/lib/components/sidebar/FavoriteMenu.svelte @@ -1,10 +1,9 @@ - -
- -
+ + + +
{#if !favoriteLinks.length} @@ -30,22 +37,24 @@ {:else}
{#each favoriteLinks ?? [] as favorite (favorite.href)} - - - - {#if favorite.kind == 'script'} - - {:else if favorite.kind == 'flow'} - - {:else if favorite.kind == 'app' || favorite.kind == 'raw_app'} - - {/if} - - - {favorite.label} - + + + {#if favorite.kind == 'script'} + + {:else if favorite.kind == 'flow'} + + {:else if favorite.kind == 'app' || favorite.kind == 'raw_app'} + + {/if} - + + {favorite.label} + + {/each}
{/if} diff --git a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte index 7b75c77ab1..8ce8eba2a1 100644 --- a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte +++ b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte @@ -8,21 +8,21 @@ workspaceUsageStore } from '$lib/stores' import { Building, Plus, Settings } from 'lucide-svelte' - - import Menu from '../common/menu/MenuV2.svelte' + import MenuButtonMelt from '$lib/components/sidebar/MenuButtonMelt.svelte' + import Menu from '$lib/components/meltComponents/Menu.svelte' + import { melt } from '@melt-ui/svelte' import { goto } from '$lib/navigation' import { base } from '$lib/base' import { page } from '$app/stores' import { switchWorkspace } from '$lib/storeUtils' import MultiplayerMenu from './MultiplayerMenu.svelte' import { enterpriseLicense } from '$lib/stores' - import MenuButton from './MenuButton.svelte' - import { MenuItem } from '@rgossiaux/svelte-headlessui' import { isCloudHosted } from '$lib/cloud' import { initAllAiWorkspace } from '../copilot/lib' import { twMerge } from 'tailwind-merge' export let isCollapsed: boolean = false + export let createMenu: any // When used outside of the side bar, where links to workspace settings and such don't make as much sense. export let strictWorkspaceSelect = false @@ -54,48 +54,50 @@ } - -
- + + w.id === $workspaceStore)?.color} + {trigger} /> -
+
{#each $userWorkspaces as workspace} - - - + {#if workspace.color} +
+ {/if} +
+ {/each}
{#if (isCloudHosted() || $superadmin) && !strictWorkspaceSelect} @@ -118,9 +120,13 @@ on:click={() => { localStorage.removeItem('workspace') }} - class="text-primary block px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary" + class={twMerge( + 'text-primary block px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary', + 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' + )} role="menuitem" tabindex="-1" + use:melt={item} > All workspaces @@ -128,17 +134,19 @@ {/if} {#if ($userStore?.is_admin || $superadmin) && !strictWorkspaceSelect} {/if}
@@ -158,12 +166,16 @@ {#if $userStore?.is_admin} diff --git a/frontend/src/routes/(root)/(logged)/+layout.svelte b/frontend/src/routes/(root)/(logged)/+layout.svelte index 90b49a3ed2..ab3706e4a4 100644 --- a/frontend/src/routes/(root)/(logged)/+layout.svelte +++ b/frontend/src/routes/(root)/(logged)/+layout.svelte @@ -51,6 +51,7 @@ import MenuButton from '$lib/components/sidebar/MenuButton.svelte' import { setContext } from 'svelte' import { base } from '$app/paths' + import Menubar from '$lib/components/meltComponents/Menubar.svelte' OpenAPI.WITH_CREDENTIALS = true let menuOpen = false @@ -192,11 +193,9 @@ async function loadUsedTriggerKinds() { let usedKinds: string[] = [] const { http_routes_used, websocket_used, kafka_used, postgres_used, nats_used } = - await WorkspaceService.getUsedTriggers( - { - workspace: $workspaceStore ?? '' - } - ) + await WorkspaceService.getUsedTriggers({ + workspace: $workspaceStore ?? '' + }) if (http_routes_used) { usedKinds.push('http') } @@ -294,7 +293,13 @@ setContext('openSearchWithPrefilledText', openSearchModal) $: { - if ($enterpriseLicense && $workspaceStore && $userStore && $devopsRole !== undefined && ($devopsRole || $userStore.is_admin)) { + if ( + $enterpriseLicense && + $workspaceStore && + $userStore && + $devopsRole !== undefined && + ($devopsRole || $userStore.is_admin) + ) { mountModal = true loadCriticalAlertsMuted() } @@ -409,8 +414,10 @@ Windmill
- - + + + + openSearchModal()} @@ -462,8 +469,10 @@
- - + + + + openSearchModal()} @@ -555,8 +564,10 @@
- - + + + + openSearchModal()} diff --git a/frontend/src/routes/(root)/(logged)/svix/create-webhook/+page@(root).svelte b/frontend/src/routes/(root)/(logged)/svix/create-webhook/+page@(root).svelte index e68a192eaf..2e26a5f913 100644 --- a/frontend/src/routes/(root)/(logged)/svix/create-webhook/+page@(root).svelte +++ b/frontend/src/routes/(root)/(logged)/svix/create-webhook/+page@(root).svelte @@ -8,6 +8,7 @@ import { generateRandomString } from '$lib/utils' import Tooltip from '$lib/components/Tooltip.svelte' import WorkspaceMenu from '$lib/components/sidebar/WorkspaceMenu.svelte' + import Menubar from '$lib/components/meltComponents/Menubar.svelte' let itemPath: string | undefined = undefined let itemKind: 'script' | 'flow' | 'app' = 'script' @@ -95,7 +96,9 @@
Selected Workspace: - + + +