Files
ComfyUI_frontend/src/platform/assets/components/MediaAssetActions.vue
Jin Yi 8682ca3e5c refactor: replace custom formatExecutionTime with formatDuration utility
- Use existing formatDuration util from shared utils instead of custom
  implementation
  - Extract execution time formatting to computed property for cleaner
  template
  - Remove 'any' type assertion in MediaAssetActions, use proper types
2025-10-22 12:11:25 +09:00

56 lines
1.5 KiB
Vue

<template>
<IconGroup>
<IconButton size="sm" @click="handleDelete">
<i class="icon-[lucide--trash-2] size-4" />
</IconButton>
<IconButton v-if="assetType !== 'input'" size="sm" @click="handleDownload">
<i class="icon-[lucide--download] size-4" />
</IconButton>
<MoreButton
size="sm"
@menu-opened="emit('menuStateChanged', true)"
@menu-closed="emit('menuStateChanged', false)"
>
<template #default="{ close }">
<MediaAssetMoreMenu :close="close" @inspect="emit('inspect')" />
</template>
</MoreButton>
</IconGroup>
</template>
<script setup lang="ts">
import { computed, inject } from 'vue'
import IconButton from '@/components/button/IconButton.vue'
import IconGroup from '@/components/button/IconGroup.vue'
import MoreButton from '@/components/button/MoreButton.vue'
import { useMediaAssetActions } from '../composables/useMediaAssetActions'
import { MediaAssetKey } from '../schemas/mediaAssetSchema'
import MediaAssetMoreMenu from './MediaAssetMoreMenu.vue'
const emit = defineEmits<{
menuStateChanged: [isOpen: boolean]
inspect: []
}>()
const { asset, context } = inject(MediaAssetKey)!
const actions = useMediaAssetActions()
const assetType = computed(() => {
return context?.value?.type || asset.value?.tags?.[0] || 'output'
})
const handleDelete = () => {
if (asset.value) {
actions.deleteAsset(asset.value.id)
}
}
const handleDownload = () => {
if (asset.value) {
actions.downloadAsset()
}
}
</script>