|
123 | 123 | <template #cell-gameVersions="{ row: version }"> |
124 | 124 | <div class="flex min-w-0 w-full max-w-[12rem] flex-wrap gap-1"> |
125 | 125 | <TagItem |
126 | | - v-for="gameVersionGroup in getDisplayGameVersions(version).slice( |
127 | | - 0, |
128 | | - MAX_GAME_VERSION_TAGS, |
129 | | - )" |
| 126 | + v-for="gameVersionGroup in version.gameVersionGroups.slice(0, MAX_GAME_VERSION_TAGS)" |
130 | 127 | :key="`version-tag-${gameVersionGroup.label}`" |
131 | 128 | v-tooltip="getFilterTooltip(gameVersionGroup.label)" |
132 | 129 | data-no-row-click |
|
136 | 133 | <span class="min-w-0 truncate">{{ gameVersionGroup.label }}</span> |
137 | 134 | </TagItem> |
138 | 135 | <FloatingMenu |
139 | | - v-if="getDisplayGameVersions(version).length > MAX_GAME_VERSION_TAGS" |
| 136 | + v-if="version.gameVersionGroups.length > MAX_GAME_VERSION_TAGS" |
140 | 137 | trigger="hover" |
141 | 138 | placement="bottom" |
142 | 139 | data-no-row-click |
143 | 140 | class="w-full min-w-0 cursor-default" |
144 | 141 | > |
145 | 142 | <TagItem class="w-fit max-w-full truncate" tabindex="0"> |
146 | 143 | <span class="min-w-0 truncate"> |
147 | | - +{{ getDisplayGameVersions(version).length - MAX_GAME_VERSION_TAGS }} |
| 144 | + +{{ version.gameVersionGroups.length - MAX_GAME_VERSION_TAGS }} |
148 | 145 | </span> |
149 | 146 | </TagItem> |
150 | 147 | <template #popper> |
151 | 148 | <div class="flex max-w-[20rem] flex-wrap gap-1"> |
152 | 149 | <TagItem |
153 | | - v-for="gameVersionGroup in getDisplayGameVersions(version).slice( |
154 | | - MAX_GAME_VERSION_TAGS, |
155 | | - )" |
| 150 | + v-for="gameVersionGroup in version.gameVersionGroups.slice(MAX_GAME_VERSION_TAGS)" |
156 | 151 | :key="`overflow-version-tag-${gameVersionGroup.label}`" |
157 | 152 | class="w-fit max-w-full truncate" |
158 | 153 | :action=" |
|
328 | 323 | <div class="flex flex-col justify-center gap-3"> |
329 | 324 | <div class="flex flex-row flex-wrap items-center gap-1.5"> |
330 | 325 | <TagItem |
331 | | - v-for="gameVersionGroup in getDisplayGameVersions(version).slice( |
| 326 | + v-for="gameVersionGroup in version.gameVersionGroups.slice( |
332 | 327 | 0, |
333 | 328 | MAX_GAME_VERSION_TAGS, |
334 | 329 | )" |
|
342 | 337 | {{ gameVersionGroup.label }} |
343 | 338 | </TagItem> |
344 | 339 | <FloatingMenu |
345 | | - v-if="getDisplayGameVersions(version).length > MAX_GAME_VERSION_TAGS" |
| 340 | + v-if="version.gameVersionGroups.length > MAX_GAME_VERSION_TAGS" |
346 | 341 | trigger="hover" |
347 | 342 | placement="bottom" |
348 | 343 | class="cursor-default smart-clickable:allow-pointer-events" |
349 | 344 | > |
350 | 345 | <TagItem tabindex="0"> |
351 | | - +{{ getDisplayGameVersions(version).length - MAX_GAME_VERSION_TAGS }} |
| 346 | + +{{ version.gameVersionGroups.length - MAX_GAME_VERSION_TAGS }} |
352 | 347 | </TagItem> |
353 | 348 | <template #popper> |
354 | 349 | <div class="flex max-w-[20rem] flex-wrap gap-1"> |
355 | 350 | <TagItem |
356 | | - v-for="gameVersionGroup in getDisplayGameVersions(version).slice( |
| 351 | + v-for="gameVersionGroup in version.gameVersionGroups.slice( |
357 | 352 | MAX_GAME_VERSION_TAGS, |
358 | 353 | )" |
359 | 354 | :key="`overflow-version-tag-${gameVersionGroup.label}`" |
@@ -526,7 +521,9 @@ type VersionTableColumn = |
526 | 521 | | 'published' |
527 | 522 | | 'downloads' |
528 | 523 | | 'actions' |
529 | | -type VersionTableRow = DisplayVersion & Record<string, unknown> |
| 524 | +type VersionTableRow = DisplayVersion & { |
| 525 | + gameVersionGroups: VersionDisplayGroup[] |
| 526 | +} & Record<string, unknown> |
530 | 527 |
|
531 | 528 | const props = withDefaults( |
532 | 529 | defineProps<{ |
@@ -643,10 +640,6 @@ function hasNoModLoader(loaders: string[]): boolean { |
643 | 640 | ) |
644 | 641 | } |
645 | 642 |
|
646 | | -function getDisplayGameVersions(version: DisplayVersion): VersionDisplayGroup[] { |
647 | | - return getVersionGroupsForDisplay(version.game_versions, props.gameVersions) |
648 | | -} |
649 | | -
|
650 | 643 | function getFilterTooltip(filter: string): string { |
651 | 644 | return formatMessage(messages.toggleFilterTooltip, { filter }) |
652 | 645 | } |
@@ -726,10 +719,12 @@ function isAnySelected(value: string, selected: string[]) { |
726 | 719 | } |
727 | 720 |
|
728 | 721 | const currentVersions = computed(() => |
729 | | - filteredVersions.value.slice( |
730 | | - (currentPage.value - 1) * pageSize.value, |
731 | | - currentPage.value * pageSize.value, |
732 | | - ), |
| 722 | + filteredVersions.value |
| 723 | + .slice((currentPage.value - 1) * pageSize.value, currentPage.value * pageSize.value) |
| 724 | + .map((version) => ({ |
| 725 | + ...version, |
| 726 | + gameVersionGroups: getVersionGroupsForDisplay(version.game_versions, props.gameVersions), |
| 727 | + })), |
733 | 728 | ) |
734 | 729 | const currentVersionRows = computed<VersionTableRow[]>( |
735 | 730 | () => currentVersions.value as VersionTableRow[], |
|
0 commit comments