diff --git a/src/components/dialog/content/manager/ManagerDialogContent.vue b/src/components/dialog/content/manager/ManagerDialogContent.vue index f2fe93982f..8fde846d76 100644 --- a/src/components/dialog/content/manager/ManagerDialogContent.vue +++ b/src/components/dialog/content/manager/ManagerDialogContent.vue @@ -408,19 +408,30 @@ const handleGridContainerClick = (event: MouseEvent) => { const hasMultipleSelections = computed(() => selectedNodePacks.value.length > 1) +// Track the last pack ID for which we've fetched full registry data +const lastFetchedPackId = ref(null) + +// Whenever a single pack is selected, fetch its full info once whenever(selectedNodePack, async () => { // Cancel any in-flight requests from previously selected node pack getPackById.cancel() - - if (!selectedNodePack.value?.id) return - // If only a single node pack is selected, fetch full node pack info from registry + const pack = selectedNodePack.value + if (!pack?.id) return if (hasMultipleSelections.value) return - const data = await getPackById.call(selectedNodePack.value.id) - - if (data?.id === selectedNodePack.value?.id) { - // If selected node hasn't changed since request, merge registry & Algolia data - selectedNodePacks.value = [merge(selectedNodePack.value, data)] + // Only fetch if we haven't already for this pack + if (lastFetchedPackId.value === pack.id) return + const data = await getPackById.call(pack.id) + // If selected node hasn't changed since request, merge registry & Algolia data + if (data?.id === pack.id) { + lastFetchedPackId.value = pack.id + const mergedPack = merge({}, pack, data) + selectedNodePacks.value = [mergedPack] + // Replace pack in displayPacks so that children receive a fresh prop reference + const idx = displayPacks.value.findIndex((p) => p.id === mergedPack.id) + if (idx !== -1) { + displayPacks.value.splice(idx, 1, mergedPack) + } } }) diff --git a/src/components/dialog/content/manager/packBanner/PackBanner.vue b/src/components/dialog/content/manager/packBanner/PackBanner.vue new file mode 100644 index 0000000000..d7386cb546 --- /dev/null +++ b/src/components/dialog/content/manager/packBanner/PackBanner.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/dialog/content/manager/packCard/PackCard.vue b/src/components/dialog/content/manager/packCard/PackCard.vue index 5cd3c98a99..45afb2c3b9 100644 --- a/src/components/dialog/content/manager/packCard/PackCard.vue +++ b/src/components/dialog/content/manager/packCard/PackCard.vue @@ -7,19 +7,15 @@ }" :pt="{ body: { class: 'p-0 flex flex-col w-full h-full rounded-2xl gap-0' }, - content: { class: 'flex-1 flex flex-col rounded-2xl' }, - title: { - class: - 'self-stretch w-full px-4 py-3 inline-flex justify-start items-center gap-6' - }, + content: { class: 'flex-1 flex flex-col rounded-2xl min-h-0' }, + title: { class: 'w-full h-full rounded-t-lg cursor-pointer' }, footer: { class: 'p-0 m-0' } }" >