Skip to content

Commit c3c8e30

Browse files
Add components for asset modal
1 parent 1fe26d7 commit c3c8e30

File tree

6 files changed

+317
-244
lines changed

6 files changed

+317
-244
lines changed

src/platform/assets/components/AssetBrowserModal.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,12 @@ function handleUploadClick() {
190190
dialogStore.showDialog({
191191
key: 'upload-model',
192192
headerComponent: UploadModelDialogHeader,
193-
component: UploadModelDialog
193+
component: UploadModelDialog,
194+
props: {
195+
onUploadSuccess: async () => {
196+
await execute()
197+
}
198+
}
194199
})
195200
}
196201
</script>
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<template>
2+
<div class="flex flex-col gap-6">
3+
<!-- Model Info Section -->
4+
<div class="flex flex-col gap-2">
5+
<p class="text-sm text-muted mb-0">
6+
{{ $t('assetBrowser.modelAssociatedWithLink') }}
7+
</p>
8+
<p class="text-sm mt-0">
9+
{{ metadata?.name || metadata?.filename }}
10+
</p>
11+
</div>
12+
13+
<!-- Model Type Selection -->
14+
<div class="flex flex-col gap-2">
15+
<label for="model-type" class="text-sm text-muted">
16+
{{ $t('assetBrowser.whatTypeOfModel') }}
17+
</label>
18+
<select
19+
id="model-type"
20+
:value="modelValue"
21+
class="w-full rounded-md border border-border bg-surface px-3 py-2 text-sm outline-none focus:border-primary focus:ring-1 focus:ring-primary"
22+
@change="$emit('update:modelValue', ($event.target as HTMLSelectElement).value)"
23+
>
24+
<option
25+
v-for="option in modelTypeOptions"
26+
:key="option.value"
27+
:value="option.value"
28+
>
29+
{{ option.label }}
30+
</option>
31+
</select>
32+
<div class="flex items-center gap-2 text-sm text-muted">
33+
<i class="icon-[lucide--info]" />
34+
<span>{{ $t('assetBrowser.notSureLeaveAsIs') }}</span>
35+
</div>
36+
</div>
37+
</div>
38+
</template>
39+
40+
<script setup lang="ts">
41+
interface ModelMetadata {
42+
content_length: number
43+
final_url: string
44+
content_type?: string
45+
filename?: string
46+
name?: string
47+
tags?: string[]
48+
preview_url?: string
49+
}
50+
51+
defineProps<{
52+
modelValue: string
53+
metadata: ModelMetadata | null
54+
}>()
55+
56+
defineEmits<{
57+
'update:modelValue': [value: string]
58+
}>()
59+
60+
const modelTypeOptions = [
61+
{ label: 'LoRA', value: 'lora' },
62+
{ label: 'Checkpoint', value: 'checkpoint' },
63+
{ label: 'Embedding', value: 'embedding' },
64+
{ label: 'VAE', value: 'vae' },
65+
{ label: 'Upscale Model', value: 'upscale_model' },
66+
{ label: 'ControlNet', value: 'controlnet' }
67+
]
68+
</script>

0 commit comments

Comments
 (0)