diff --git a/src/lib/components/common/Dropdown.svelte b/src/lib/components/common/Dropdown.svelte
index e0ac7307aa..781785020a 100644
--- a/src/lib/components/common/Dropdown.svelte
+++ b/src/lib/components/common/Dropdown.svelte
@@ -14,6 +14,9 @@
/** Close when clicking outside */
export let closeOnOutsideClick = true;
+ /** Close action menus after selection. Submenu triggers prevent the default click. */
+ export let closeOnSelect = false;
+
/** Called when open/close state changes */
export let onOpenChange: (state: boolean) => void = () => {};
@@ -350,7 +353,10 @@
style:max-height={resolvedMaxHeight}
style:overflow-y="auto"
transition:flyAndScale
- on:click={(e) => e.stopPropagation()}
+ on:click={(e) => {
+ e.stopPropagation();
+ if (closeOnSelect && !e.defaultPrevented) closeDropdown();
+ }}
on:pointerdown={(e) => e.stopPropagation()}
>
diff --git a/src/lib/components/layout/Sidebar/ChatMenu.svelte b/src/lib/components/layout/Sidebar/ChatMenu.svelte
index b3286d80a3..1cd001f75a 100644
--- a/src/lib/components/layout/Sidebar/ChatMenu.svelte
+++ b/src/lib/components/layout/Sidebar/ChatMenu.svelte
@@ -45,7 +45,6 @@
export let chatId = '';
export let archived = false;
- let dropdown: Dropdown;
let show = false;
let pinned = false;
@@ -292,7 +291,7 @@
{/if}
{
if (state) {
@@ -313,7 +312,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
shareHandler();
}}
>
@@ -369,7 +367,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
renameHandler();
}}
>
@@ -381,7 +378,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
markUnreadHandler();
}}
>
@@ -395,7 +391,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
pinHandler();
}}
>
@@ -413,7 +408,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
cloneChatHandler();
}}
>
@@ -469,7 +463,6 @@
draggable="false"
class="flex h-[1.6875rem] gap-2 items-center rounded-xl px-2 text-[0.8125rem] cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-900 w-full"
on:click={() => {
- dropdown.close();
deleteHandler();
}}
>