Skip to content

Commit c9c840f

Browse files
committed
feat: add refresh button to table search/select component (#2100)
1 parent 5abcf05 commit c9c840f

1 file changed

Lines changed: 49 additions & 10 deletions

File tree

assets/svelte/components/SchemaTableSelector.svelte

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@
276276
}
277277
278278
let databaseRefreshState: "idle" | "refreshing" | "done" = "idle";
279+
let tableRefreshState: "idle" | "refreshing" | "done" = "idle";
279280
280281
function refreshDatabases() {
281282
databaseRefreshState = "refreshing";
@@ -287,6 +288,18 @@
287288
});
288289
}
289290
291+
function refreshTables() {
292+
if (selectedDatabaseId) {
293+
tableRefreshState = "refreshing";
294+
pushEvent("refresh_tables", { database_id: selectedDatabaseId }, () => {
295+
tableRefreshState = "done";
296+
setTimeout(() => {
297+
tableRefreshState = "idle";
298+
}, 2000);
299+
});
300+
}
301+
}
302+
290303
// Add computed property for schema disabled state
291304
$: isSchemaSelectionDisabled = tableMode === "include";
292305
@@ -517,16 +530,42 @@
517530
{#if tableMode !== "all"}
518531
<div class="border rounded-lg overflow-hidden">
519532
<div class="p-2 border-b bg-gray-50">
520-
<div class="relative">
521-
<SearchIcon
522-
class="absolute left-2 top-1/2 transform -translate-y-1/2 text-gray-400 h-4 w-4"
523-
/>
524-
<Input
525-
type="search"
526-
placeholder="Search tables..."
527-
class="pl-8"
528-
bind:value={searchTableQuery}
529-
/>
533+
<div class="flex items-center space-x-2">
534+
<div class="relative flex-1">
535+
<SearchIcon
536+
class="absolute left-2 top-1/2 transform -translate-y-1/2 text-gray-400 h-4 w-4"
537+
/>
538+
<Input
539+
type="search"
540+
placeholder="Search tables..."
541+
class="pl-8"
542+
bind:value={searchTableQuery}
543+
/>
544+
</div>
545+
<Tooltip.Root>
546+
<Tooltip.Trigger>
547+
<Button
548+
variant="outline"
549+
size="sm"
550+
on:click={refreshTables}
551+
disabled={tableRefreshState === "refreshing" ||
552+
!selectedDatabaseId}
553+
class="p-2"
554+
aria-label="Refresh Tables"
555+
>
556+
{#if tableRefreshState === "refreshing"}
557+
<RotateCwIcon class="h-5 w-5 animate-spin" />
558+
{:else if tableRefreshState === "done"}
559+
<CheckIcon class="h-5 w-5 text-green-500" />
560+
{:else}
561+
<RotateCwIcon class="h-5 w-5" />
562+
{/if}
563+
</Button>
564+
</Tooltip.Trigger>
565+
<Tooltip.Content>
566+
<p class="text-xs">Refresh tables</p>
567+
</Tooltip.Content>
568+
</Tooltip.Root>
530569
</div>
531570
</div>
532571
<div class="max-h-[200px] overflow-y-auto">

0 commit comments

Comments
 (0)