diff --git a/app/components/PackageVersions.vue b/app/components/PackageVersions.vue index afdbe961c9..9494041e32 100644 --- a/app/components/PackageVersions.vue +++ b/app/components/PackageVersions.vue @@ -120,9 +120,8 @@ const tagVersions = ref>(new Map()) const loadingTags = ref>(new Set()) const otherVersionsExpanded = shallowRef(false) -const otherMajorGroups = shallowRef< - Array<{ major: number; versions: VersionDisplay[]; expanded: boolean }> ->([]) +const expandedMajorGroups = ref>(new Set()) +const otherMajorGroups = shallowRef>([]) const otherVersionsLoading = shallowRef(false) // Cached full version list (local to component instance) @@ -222,8 +221,8 @@ function processLoadedVersions(allVersions: PackageVersionInfo[]) { otherMajorGroups.value = sortedMajors.map(major => ({ major, versions: byMajor.get(major)!, - expanded: false, })) + expandedMajorGroups.value.clear() } // Expand a tag row @@ -277,10 +276,11 @@ async function expandOtherVersions() { } // Toggle a major group -function toggleMajorGroup(index: number) { - const group = otherMajorGroups.value[index] - if (group) { - group.expanded = !group.expanded +function toggleMajorGroup(major: number) { + if (expandedMajorGroups.value.has(major)) { + expandedMajorGroups.value.delete(major) + } else { + expandedMajorGroups.value.add(major) } } @@ -497,20 +497,24 @@ function getTagVersions(tag: string): VersionDisplay[] {