@@ -120,9 +120,8 @@ const tagVersions = ref<Map<string, VersionDisplay[]>>(new Map())
120120const loadingTags = ref <Set <string >>(new Set ())
121121
122122const otherVersionsExpanded = shallowRef (false )
123- const otherMajorGroups = shallowRef <
124- Array < { major : number ; versions : VersionDisplay []; expanded : boolean }>
125- > ([])
123+ const expandedMajorGroups = ref <Set <number >>(new Set ())
124+ const otherMajorGroups = shallowRef <Array <{ major: number ; versions: VersionDisplay [] }>>([])
126125const otherVersionsLoading = shallowRef (false )
127126
128127// Cached full version list (local to component instance)
@@ -222,8 +221,8 @@ function processLoadedVersions(allVersions: PackageVersionInfo[]) {
222221 otherMajorGroups .value = sortedMajors .map (major => ({
223222 major ,
224223 versions: byMajor .get (major )! ,
225- expanded: false ,
226224 }))
225+ expandedMajorGroups .value .clear ()
227226}
228227
229228// Expand a tag row
@@ -277,10 +276,11 @@ async function expandOtherVersions() {
277276}
278277
279278// Toggle a major group
280- function toggleMajorGroup(index : number ) {
281- const group = otherMajorGroups .value [index ]
282- if (group ) {
283- group .expanded = ! group .expanded
279+ function toggleMajorGroup(major : number ) {
280+ if (expandedMajorGroups .value .has (major )) {
281+ expandedMajorGroups .value .delete (major )
282+ } else {
283+ expandedMajorGroups .value .add (major )
284284 }
285285}
286286
@@ -497,20 +497,24 @@ function getTagVersions(tag: string): VersionDisplay[] {
497497
498498 <!-- Major version groups (untagged versions) -->
499499 <template v-if =" otherMajorGroups .length > 0 " >
500- <div v-for =" ( group, groupIndex) in otherMajorGroups" :key =" group.major" >
500+ <div v-for =" group in otherMajorGroups" :key =" group.major" >
501501 <!-- Major group header -->
502502 <button
503503 v-if =" group.versions.length > 1"
504504 type =" button"
505505 class =" w-full text-left py-1"
506- :aria-expanded =" group.expanded "
506+ :aria-expanded =" expandedMajorGroups.has( group.major) "
507507 :title =" group.versions[0]?.version"
508- @click =" toggleMajorGroup(groupIndex )"
508+ @click =" toggleMajorGroup(group.major )"
509509 >
510510 <div class =" flex items-center gap-2" >
511511 <span
512512 class =" w-3 h-3 transition-transform duration-200 text-fg-subtle"
513- :class =" group.expanded ? 'i-carbon-chevron-down' : 'i-carbon-chevron-right'"
513+ :class ="
514+ expandedMajorGroups.has(group.major)
515+ ? 'i-carbon-chevron-down'
516+ : 'i-carbon-chevron-right'
517+ "
514518 />
515519 <span
516520 class =" font-mono text-xs truncate"
@@ -567,7 +571,10 @@ function getTagVersions(tag: string): VersionDisplay[] {
567571 </div >
568572
569573 <!-- Major group versions -->
570- <div v-if =" group.expanded && group.versions.length > 1" class =" ml-5 space-y-0.5" >
574+ <div
575+ v-if =" expandedMajorGroups.has(group.major) && group.versions.length > 1"
576+ class =" ml-5 space-y-0.5"
577+ >
571578 <div v-for =" v in group.versions.slice(1)" :key =" v.version" class =" py-1" >
572579 <div class =" flex items-center justify-between gap-2" >
573580 <NuxtLink
0 commit comments