From fdae17f8a6fc163f925b73286622eae32f029308 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 28 Sep 2026 00:14:36 +0400 Subject: [PATCH] refac --- src/lib/components/common/Dropdown.svelte | 8 +++++++- src/lib/components/layout/Sidebar/ChatMenu.svelte | 9 +-------- 2 files changed, 8 insertions(+), 9 deletions(-) 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(); }} >