From 1ebc51d52efd6e5a6c8a8a07a66a329e7c3ea9ed Mon Sep 17 00:00:00 2001 From: dante01yoon Date: Tue, 21 Apr 2026 11:11:11 +0900 Subject: [PATCH] fix: FE-226 thread input-side created_at into All-tab sort --- .../components/WidgetSelectDropdown.vue | 8 +++++- .../composables/useWidgetSelectItems.ts | 28 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue index 970124615e..d1b84b3965 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue @@ -48,6 +48,7 @@ const modelValue = defineModel({ const { t } = useI18n() const outputMediaAssets = useMediaAssets('output') +const inputMediaAssets = useMediaAssets('input') const transformCompatProps = useTransformCompatOverlayProps() @@ -84,6 +85,7 @@ const { modelValue, assetKind: () => props.assetKind, outputMediaAssets, + inputMediaAssets, assetData, isAssetMode: () => props.isAssetMode }) @@ -146,9 +148,13 @@ const acceptTypes = computed(() => { const layoutMode = ref(props.defaultLayoutMode ?? 'grid') function handleIsOpenUpdate(isOpen: boolean) { - if (isOpen && !outputMediaAssets.loading.value) { + if (!isOpen) return + if (!outputMediaAssets.loading.value) { void outputMediaAssets.refresh() } + if (!inputMediaAssets.loading.value) { + void inputMediaAssets.refresh() + } } diff --git a/src/renderer/extensions/vueNodes/widgets/composables/useWidgetSelectItems.ts b/src/renderer/extensions/vueNodes/widgets/composables/useWidgetSelectItems.ts index 1317dd2928..42a18c0933 100644 --- a/src/renderer/extensions/vueNodes/widgets/composables/useWidgetSelectItems.ts +++ b/src/renderer/extensions/vueNodes/widgets/composables/useWidgetSelectItems.ts @@ -146,18 +146,34 @@ export function useWidgetSelectItems(options: UseWidgetSelectItemsOptions) { { immediate: true } ) + const inputAssetsByName = computed>(() => { + const map = new Map() + const assets = options.inputMediaAssets?.media.value + if (!assets) return map + for (const asset of assets) { + map.set(asset.name, asset) + } + return map + }) + const inputItems = computed(() => { const values = toValue(options.values) || [] if (!Array.isArray(values)) return [] const labelFn = toValue(options.getOptionLabel) const kind = toValue(options.assetKind) - return values.map((value, index) => ({ - id: `input-${index}`, - preview_url: getMediaUrl(String(value), 'input', kind), - name: String(value), - label: getDisplayLabel(String(value), labelFn) - })) + const lookup = inputAssetsByName.value + return values.map((value, index) => { + const name = String(value) + const matched = lookup.get(name) + return { + id: `input-${index}`, + preview_url: getMediaUrl(name, 'input', kind), + name, + label: getDisplayLabel(name, labelFn), + created_at: matched?.created_at + } + }) }) const outputItems = computed(() => {