|
1 | 1 | <script setup lang="ts"> |
2 | 2 | import type { Template } from '@md/shared' |
3 | | -import { Calendar, Clock, FileText, Package, Pencil, Plus, Search, Trash2 } from 'lucide-vue-next' |
| 3 | +import { Calendar, Clock, FileDown, FileInput, FileText, Package, Pencil, Plus, Search, Trash2 } from 'lucide-vue-next' |
4 | 4 | import { useEditorStore } from '@/stores/editor' |
5 | 5 | import { usePostStore } from '@/stores/post' |
6 | 6 | import { useTemplateStore } from '@/stores/template' |
@@ -119,6 +119,19 @@ function applyTemplate(template: Template) { |
119 | 119 | toggleShowTemplateDialog(false) |
120 | 120 | } |
121 | 121 |
|
| 122 | +// 在光标位置插入模板 |
| 123 | +function insertTemplate(template: Template) { |
| 124 | + editorStore.insertAtCursor(template.content) |
| 125 | +
|
| 126 | + const currentPost = postStore.currentPost |
| 127 | + if (currentPost) { |
| 128 | + postStore.updatePostContent(currentPost.id, editorStore.getContent()) |
| 129 | + } |
| 130 | +
|
| 131 | + toast.success(`已插入模板「${template.name}」`) |
| 132 | + toggleShowTemplateDialog(false) |
| 133 | +} |
| 134 | +
|
122 | 135 | // 删除确认对话框 |
123 | 136 | const deleteConfirmDialog = ref(false) |
124 | 137 | const templateToDelete = ref<Template | null>(null) |
@@ -294,57 +307,42 @@ function onUpdate(val: boolean) { |
294 | 307 |
|
295 | 308 | <!-- 操作按钮 --> |
296 | 309 | <div class="flex gap-1 flex-shrink-0"> |
297 | | - <TooltipProvider :delay-duration="200"> |
298 | | - <Tooltip> |
299 | | - <TooltipTrigger as-child> |
300 | | - <Button |
301 | | - variant="outline" |
302 | | - size="icon" |
303 | | - class="size-8" |
304 | | - @click="applyTemplate(template)" |
305 | | - > |
306 | | - <FileText class="size-4" /> |
307 | | - </Button> |
308 | | - </TooltipTrigger> |
309 | | - <TooltipContent> |
310 | | - 应用模板 |
311 | | - </TooltipContent> |
312 | | - </Tooltip> |
313 | | - </TooltipProvider> |
314 | | - <TooltipProvider :delay-duration="200"> |
315 | | - <Tooltip> |
316 | | - <TooltipTrigger as-child> |
317 | | - <Button |
318 | | - variant="outline" |
319 | | - size="icon" |
320 | | - class="size-8" |
321 | | - @click="openEditForm(template)" |
322 | | - > |
323 | | - <Pencil class="size-4" /> |
324 | | - </Button> |
325 | | - </TooltipTrigger> |
326 | | - <TooltipContent> |
327 | | - 编辑模板 |
328 | | - </TooltipContent> |
329 | | - </Tooltip> |
330 | | - </TooltipProvider> |
331 | | - <TooltipProvider :delay-duration="200"> |
332 | | - <Tooltip> |
333 | | - <TooltipTrigger as-child> |
334 | | - <Button |
335 | | - variant="outline" |
336 | | - size="icon" |
337 | | - class="size-8 text-destructive hover:text-destructive" |
338 | | - @click="openDeleteConfirm(template)" |
339 | | - > |
340 | | - <Trash2 class="size-4" /> |
341 | | - </Button> |
342 | | - </TooltipTrigger> |
343 | | - <TooltipContent> |
344 | | - 删除模板 |
345 | | - </TooltipContent> |
346 | | - </Tooltip> |
347 | | - </TooltipProvider> |
| 310 | + <Button |
| 311 | + variant="outline" |
| 312 | + size="icon" |
| 313 | + class="size-8" |
| 314 | + title="应用模板(替换全部内容)" |
| 315 | + @click="applyTemplate(template)" |
| 316 | + > |
| 317 | + <FileInput class="size-4" /> |
| 318 | + </Button> |
| 319 | + <Button |
| 320 | + variant="outline" |
| 321 | + size="icon" |
| 322 | + class="size-8" |
| 323 | + title="插入模板(在光标处插入)" |
| 324 | + @click="insertTemplate(template)" |
| 325 | + > |
| 326 | + <FileDown class="size-4" /> |
| 327 | + </Button> |
| 328 | + <Button |
| 329 | + variant="outline" |
| 330 | + size="icon" |
| 331 | + class="size-8" |
| 332 | + title="编辑模板" |
| 333 | + @click="openEditForm(template)" |
| 334 | + > |
| 335 | + <Pencil class="size-4" /> |
| 336 | + </Button> |
| 337 | + <Button |
| 338 | + variant="outline" |
| 339 | + size="icon" |
| 340 | + class="size-8 text-destructive hover:text-destructive" |
| 341 | + title="删除模板" |
| 342 | + @click="openDeleteConfirm(template)" |
| 343 | + > |
| 344 | + <Trash2 class="size-4" /> |
| 345 | + </Button> |
348 | 346 | </div> |
349 | 347 | </div> |
350 | 348 | </div> |
|
0 commit comments