mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
fix: address PR review feedback for keybinding presets
- Use file-input icon instead of download for import action - Replace custom delete dialog with dialogService.confirm - Add 3s timeout to all keybinding preset toast notifications
This commit is contained in:
@@ -1,31 +0,0 @@
|
||||
<template>
|
||||
<div
|
||||
class="flex w-full max-w-[420px] flex-col border-t border-border-default"
|
||||
>
|
||||
<div class="flex flex-col gap-4 p-4">
|
||||
<p class="m-0 text-sm text-muted-foreground">
|
||||
{{ $t('g.keybindingPresets.deletePresetWarning') }}
|
||||
</p>
|
||||
<div class="flex justify-end gap-2">
|
||||
<Button
|
||||
variant="textonly"
|
||||
class="text-muted-foreground"
|
||||
@click="onResult(false)"
|
||||
>
|
||||
{{ $t('g.close') }}
|
||||
</Button>
|
||||
<Button variant="secondary" @click="onResult(true)">
|
||||
{{ $t('g.delete') }}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import Button from '@/components/ui/button/Button.vue'
|
||||
|
||||
const { onResult } = defineProps<{
|
||||
onResult: (result: boolean) => void
|
||||
}>()
|
||||
</script>
|
||||
@@ -1,7 +0,0 @@
|
||||
<template>
|
||||
<div class="flex w-full items-center p-4">
|
||||
<p class="m-0 text-sm font-medium">
|
||||
{{ $t('g.keybindingPresets.deletePresetTitle') }}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
@@ -34,7 +34,7 @@
|
||||
{{ $t('g.keybindingPresets.importKeybindingPreset') }}
|
||||
</span>
|
||||
<i
|
||||
class="icon-[lucide--download] shrink-0 text-base-foreground"
|
||||
class="icon-[lucide--file-input] shrink-0 text-base-foreground"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</button>
|
||||
|
||||
@@ -2,8 +2,6 @@ import { toRaw } from 'vue'
|
||||
import { fromZodError } from 'zod-validation-error'
|
||||
|
||||
import { downloadBlob } from '@/base/common/downloadUtil'
|
||||
import DeletePresetContent from '@/components/dialog/content/setting/keybinding/DeletePresetContent.vue'
|
||||
import DeletePresetHeader from '@/components/dialog/content/setting/keybinding/DeletePresetHeader.vue'
|
||||
import UnsavedChangesContent from '@/components/dialog/content/setting/keybinding/UnsavedChangesContent.vue'
|
||||
import UnsavedChangesHeader from '@/components/dialog/content/setting/keybinding/UnsavedChangesHeader.vue'
|
||||
import { useErrorHandling } from '@/composables/useErrorHandling'
|
||||
@@ -67,28 +65,8 @@ export function useKeybindingPresetService() {
|
||||
await settingStore.set('Comfy.Keybinding.CurrentPreset', 'default')
|
||||
}
|
||||
|
||||
const DELETE_DIALOG_KEY = 'delete-keybinding-preset'
|
||||
const UNSAVED_DIALOG_KEY = 'unsaved-keybinding-changes'
|
||||
|
||||
function showDeletePresetDialog(): Promise<boolean> {
|
||||
return new Promise((resolve) => {
|
||||
dialogService.showSmallLayoutDialog({
|
||||
key: DELETE_DIALOG_KEY,
|
||||
headerComponent: DeletePresetHeader,
|
||||
component: DeletePresetContent,
|
||||
props: {
|
||||
onResult: (result: boolean) => {
|
||||
resolve(result)
|
||||
dialogStore.closeDialog({ key: DELETE_DIALOG_KEY })
|
||||
}
|
||||
},
|
||||
dialogComponentProps: {
|
||||
onClose: () => resolve(false)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function showUnsavedChangesDialog(
|
||||
presetName: string
|
||||
): Promise<boolean | null> {
|
||||
@@ -159,12 +137,17 @@ export function useKeybindingPresetService() {
|
||||
await settingStore.set('Comfy.Keybinding.CurrentPreset', name)
|
||||
toast.add({
|
||||
severity: 'success',
|
||||
summary: t('g.keybindingPresets.presetSaved', { name })
|
||||
summary: t('g.keybindingPresets.presetSaved', { name }),
|
||||
life: 3000
|
||||
})
|
||||
}
|
||||
|
||||
async function deletePreset(name: string) {
|
||||
const confirmed = await showDeletePresetDialog()
|
||||
const confirmed = await dialogService.confirm({
|
||||
title: t('g.keybindingPresets.deletePresetTitle'),
|
||||
message: t('g.keybindingPresets.deletePresetWarning'),
|
||||
type: 'delete'
|
||||
})
|
||||
if (!confirmed) return
|
||||
|
||||
const resp = await api.deleteUserData(presetFilePath(name))
|
||||
@@ -178,7 +161,8 @@ export function useKeybindingPresetService() {
|
||||
|
||||
toast.add({
|
||||
severity: 'info',
|
||||
summary: t('g.keybindingPresets.presetDeleted', { name })
|
||||
summary: t('g.keybindingPresets.presetDeleted', { name }),
|
||||
life: 3000
|
||||
})
|
||||
}
|
||||
|
||||
@@ -226,7 +210,8 @@ export function useKeybindingPresetService() {
|
||||
|
||||
toast.add({
|
||||
severity: 'success',
|
||||
summary: t('g.keybindingPresets.presetImported')
|
||||
summary: t('g.keybindingPresets.presetImported'),
|
||||
life: 3000
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user