feat: add SQL copy functionality with tooltip display in DataGrid

This commit is contained in:
t8y2 2026-04-29 20:56:56 +08:00
parent ead6417875
commit e2d8820751
1 changed files with 15 additions and 3 deletions

View File

@ -11,6 +11,7 @@ import {
import {
DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import type { QueryResult, ColumnInfo } from "@/types/database";
import { save as savePath } from "@tauri-apps/plugin-dialog";
import { writeTextFile } from "@tauri-apps/plugin-fs";
@ -478,6 +479,10 @@ async function exportMarkdown() {
}
const sqlOneLiner = computed(() => props.sql?.replace(/\s+/g, " ").trim() || "");
function copySql() {
if (props.sql) navigator.clipboard.writeText(props.sql);
}
</script>
<template>
@ -669,9 +674,16 @@ const sqlOneLiner = computed(() => props.sql?.replace(/\s+/g, " ").trim() || "")
</DropdownMenuContent>
</DropdownMenu>
<span v-if="sqlOneLiner" class="truncate max-w-[30%] opacity-60" :title="sqlOneLiner">
{{ sqlOneLiner }}
</span>
<Tooltip v-if="sqlOneLiner">
<TooltipTrigger as-child>
<span class="truncate max-w-[30%] opacity-60 cursor-pointer hover:opacity-100" @click="copySql">
{{ sqlOneLiner }}
</span>
</TooltipTrigger>
<TooltipContent side="top" class="max-w-md">
<pre class="text-xs font-mono whitespace-pre-wrap">{{ props.sql }}</pre>
</TooltipContent>
</Tooltip>
</div>
</div>
</template>