Skip to content

Commit 199c5fd

Browse files
committed
WIP: Renaming Assets, UI, not hooked up to backend.
1 parent e09a1d4 commit 199c5fd

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

src/components/common/EditableText.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
...inputAttrs
1919
}
2020
}"
21-
@keyup.enter="blurInputElement"
22-
@keyup.escape="cancelEditing"
21+
@keyup.enter.capture.stop="blurInputElement"
22+
@keyup.escape.stop="cancelEditing"
2323
@click.stop
2424
@pointerdown.stop.capture
2525
@pointermove.stop.capture
@@ -38,7 +38,7 @@ const {
3838
} = defineProps<{
3939
modelValue: string
4040
isEditing?: boolean
41-
inputAttrs?: Record<string, any>
41+
inputAttrs?: Record<string, string>
4242
}>()
4343
4444
const emit = defineEmits(['update:modelValue', 'edit', 'cancel'])

src/platform/assets/components/AssetCard.vue

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
'group appearance-none bg-transparent m-0 outline-none text-left hover:bg-secondary-background focus:bg-secondary-background border-none focus:outline-solid outline-base-foreground outline-4'
1313
)
1414
"
15-
@keydown.enter="interactive && $emit('select', asset)"
15+
@keydown.enter.self="interactive && $emit('select', asset)"
1616
>
1717
<div class="relative aspect-square w-full overflow-hidden rounded-xl">
1818
<div
@@ -44,7 +44,12 @@
4444
</IconButton>
4545
<MoreButton ref="dropdown-menu-button" size="sm">
4646
<template #default="{}">
47-
<IconTextButton :label="$t('g.rename')" type="secondary" size="md">
47+
<IconTextButton
48+
:label="$t('g.rename')"
49+
type="secondary"
50+
size="md"
51+
@click="startAssetRename"
52+
>
4853
<template #icon>
4954
<i class="icon-[lucide--pencil]" />
5055
</template>
@@ -70,7 +75,13 @@
7075
)
7176
"
7277
>
73-
{{ asset.name }}
78+
<EditableText
79+
:model-value="newNameRef ?? asset.name"
80+
:is-editing="isEditing"
81+
:input-attrs="{ 'data-testid': 'asset-name-input' }"
82+
@edit="assetRename"
83+
@cancel="assetRename()"
84+
/>
7485
</h3>
7586
<p
7687
:id="descId"
@@ -105,12 +116,13 @@
105116

106117
<script setup lang="ts">
107118
import { useImage } from '@vueuse/core'
108-
import { computed, useId, useTemplateRef } from 'vue'
119+
import { computed, ref, useId, useTemplateRef } from 'vue'
109120
110121
import IconButton from '@/components/button/IconButton.vue'
111122
import IconGroup from '@/components/button/IconGroup.vue'
112123
import IconTextButton from '@/components/button/IconTextButton.vue'
113124
import MoreButton from '@/components/button/MoreButton.vue'
125+
import EditableText from '@/components/common/EditableText.vue'
114126
import AssetBadgeGroup from '@/platform/assets/components/AssetBadgeGroup.vue'
115127
import type { AssetDisplayItem } from '@/platform/assets/composables/useAssetBrowser'
116128
import { useSettingStore } from '@/platform/settings/settingStore'
@@ -127,13 +139,16 @@ defineEmits<{
127139
128140
const settingStore = useSettingStore()
129141
130-
const dropdownMenuButton = useTemplateRef<typeof MoreButton>(
142+
const dropdownMenuButton = useTemplateRef<InstanceType<typeof MoreButton>>(
131143
'dropdown-menu-button'
132144
)
133145
134146
const titleId = useId()
135147
const descId = useId()
136148
149+
const isEditing = ref(false)
150+
const newNameRef = ref<string>() // TEMPORARY: Replace with actual response from API
151+
137152
const tooltipDelay = computed<number>(() =>
138153
settingStore.get('LiteGraph.Node.TooltipDelay')
139154
)
@@ -142,4 +157,16 @@ const { isLoading, error } = useImage({
142157
src: asset.preview_url ?? '',
143158
alt: asset.name
144159
})
160+
161+
function startAssetRename() {
162+
dropdownMenuButton.value?.hide()
163+
isEditing.value = true
164+
}
165+
166+
function assetRename(newName?: string) {
167+
isEditing.value = false
168+
if (newName) {
169+
newNameRef.value = newName
170+
}
171+
}
145172
</script>

0 commit comments

Comments
 (0)