| boolean)
rowClass?: string | ((row: T, index: number) => string)
rowClickable?: boolean | ((row: T, index: number) => boolean)
}>(),
@@ -250,6 +279,7 @@ const sortDirection = defineModel('sortDirection', { default: 'as
const slots = useSlots()
const selectionAnchorId = ref()
const hasHeaderSlot = computed(() => Boolean(slots.header))
+const hasRowBelowSlot = computed(() => Boolean(slots['row-below']))
const columnSpan = computed(() => Math.max(props.columns.length + (props.showSelection ? 1 : 0), 1))
const {
@@ -331,6 +361,22 @@ function getRowRenderKey(row: T, rowIndex: number): PropertyKey {
return rowIndex
}
+function getRowPartRenderKey(row: T, rowIndex: number, part: 'group' | 'row' | 'below'): string {
+ return `${String(getRowRenderKey(row, rowIndex))}-${part}`
+}
+
+function isRowBelowVisible(row: T, rowIndex: number): boolean {
+ if (!hasRowBelowSlot.value || props.virtualized) {
+ return false
+ }
+
+ if (typeof props.rowBelowVisible === 'function') {
+ return props.rowBelowVisible(row, rowIndex)
+ }
+
+ return props.rowBelowVisible ?? true
+}
+
function getRowClass(row: T, rowIndex: number): string[] {
const baseClass = rowIndex % 2 === 0 ? 'bg-surface-2' : 'bg-surface-1.5'
const customClass =
@@ -339,6 +385,20 @@ function getRowClass(row: T, rowIndex: number): string[] {
return customClass ? [baseClass, customClass] : [baseClass]
}
+function getRowBelowClass(row: T, rowIndex: number): string[] {
+ const classes = [
+ rowIndex % 2 === 0 ? 'bg-surface-2' : 'bg-surface-1.5',
+ 'table-row-below',
+ 'transition-[filter]',
+ ]
+
+ if (isRowClickable(row, rowIndex)) {
+ classes.push('cursor-pointer')
+ }
+
+ return classes
+}
+
function isRowClickable(row: T, rowIndex: number): boolean {
return typeof props.rowClickable === 'function'
? props.rowClickable(row, rowIndex)
diff --git a/packages/ui/src/components/project/ProjectPageVersions.vue b/packages/ui/src/components/project/ProjectPageVersions.vue
index 31614b55ee..012fea3115 100644
--- a/packages/ui/src/components/project/ProjectPageVersions.vue
+++ b/packages/ui/src/components/project/ProjectPageVersions.vue
@@ -49,13 +49,14 @@
row-key="id"
:row-class="getVersionRowClass"
:row-clickable="!!versionLink"
+ :row-below-visible="isFileRowVisible"
table-layout="auto"
@row-click="openVersionRow"
>
- {{ formatMessage(messages.withheld) }}
+
+
+ {{ formatMessage(messages.withheld) }}
+
-
-
-
- {{ file.filename }} - {{ formatBytes(file.size) }}
-
+
+
+
+
+
+
+
+ {{ file.filename }} - {{ formatBytes(file.size) }}
-
+
- {{ gameVersion }}
+ {{ gameVersion }}
|