Skip to content

Commit 0b71fdf

Browse files
committed
fix: Chat Sidebar interactions
1 parent b8c6795 commit 0b71fdf

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebar.svelte

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,12 @@
1515
let searchQuery = $state('');
1616
1717
let filteredConversations = $derived.by(() => {
18-
if (isSearchModeActive && searchQuery.trim().length > 0) {
18+
if (searchQuery.trim().length > 0) {
1919
return conversations().filter((conversation: { name: string }) =>
2020
conversation.name.toLowerCase().includes(searchQuery.toLowerCase())
2121
);
2222
}
2323
24-
if (isSearchModeActive && searchQuery.trim().length === 0) {
25-
return [];
26-
}
27-
2824
return conversations();
2925
});
3026
@@ -60,8 +56,8 @@
6056

6157
<ChatSidebarActions
6258
{handleMobileSidebarItemClick}
63-
{isSearchModeActive}
64-
{searchQuery}
59+
bind:isSearchModeActive
60+
bind:searchQuery
6561
/>
6662
</Sidebar.Header>
6763

tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebarActions.svelte

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,38 @@
99
searchQuery: string;
1010
}
1111
12-
let { handleMobileSidebarItemClick, isSearchModeActive, searchQuery }: Props = $props();
12+
let { handleMobileSidebarItemClick, isSearchModeActive = $bindable(), searchQuery = $bindable() }: Props = $props();
13+
14+
let searchInput: HTMLInputElement | null = $state(null);
15+
16+
$effect(() => {
17+
if (isSearchModeActive) {
18+
searchInput?.focus();
19+
}
20+
})
21+
22+
function handleSearchModeDeactivate() {
23+
isSearchModeActive = false;
24+
searchQuery = '';
25+
}
1326
</script>
1427

1528
<div class="space-y-0.5">
1629
{#if isSearchModeActive}
1730
<div class="relative">
1831
<Search class="text-muted-foreground absolute left-2 top-2.5 h-4 w-4" />
1932

20-
<Input bind:value={searchQuery} placeholder="Search conversations..." class="pl-8" />
33+
<Input
34+
bind:ref={searchInput}
35+
onkeydown={(e) => e.key === 'Escape' && handleSearchModeDeactivate()}
36+
placeholder="Search conversations..."
37+
class="pl-8"
38+
bind:value={searchQuery}
39+
/>
2140

2241
<X
2342
class="cursor-pointertext-muted-foreground absolute right-2 top-2.5 h-4 w-4"
24-
onclick={() => (isSearchModeActive = false)}
43+
onclick={handleSearchModeDeactivate}
2544
/>
2645
</div>
2746
{:else}

0 commit comments

Comments
 (0)