summaryrefslogtreecommitdiff
path: root/Sora/Views/Shared/ThumbnailGridView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Shared/ThumbnailGridView.swift')
-rw-r--r--Sora/Views/Shared/ThumbnailGridView.swift21
1 files changed, 18 insertions, 3 deletions
diff --git a/Sora/Views/Shared/ThumbnailGridView.swift b/Sora/Views/Shared/ThumbnailGridView.swift
index a7130c2..ec8cd10 100644
--- a/Sora/Views/Shared/ThumbnailGridView.swift
+++ b/Sora/Views/Shared/ThumbnailGridView.swift
@@ -8,12 +8,27 @@ struct ThumbnailGridView<Item: Hashable & Identifiable, Content: View>: View {
let columnsData: [[Item]]
let content: (Item) -> Content
+ private var resolvedColumnCount: Int {
+ max(columnCount, 1)
+ }
+
+ private var resolvedColumnsData: [[Item]] {
+ let clippedColumnsData = Array(columnsData.prefix(resolvedColumnCount))
+ let missingColumnCount = resolvedColumnCount - clippedColumnsData.count
+
+ if missingColumnCount <= 0 {
+ return clippedColumnsData
+ }
+
+ return clippedColumnsData + Array(repeating: [], count: missingColumnCount)
+ }
+
var body: some View {
if useAlternativeGrid {
HStack(alignment: .top) {
- ForEach(0..<columnCount, id: \.self) { columnIndex in
+ ForEach(Array(resolvedColumnsData.enumerated()), id: \.offset) { _, columnItems in
LazyVStack {
- ForEach(columnsData[columnIndex], id: \.id) { item in
+ ForEach(columnItems, id: \.id) { item in
content(item)
.id(item.id)
}
@@ -32,7 +47,7 @@ struct ThumbnailGridView<Item: Hashable & Identifiable, Content: View>: View {
content(item)
.id(item.id)
}
- .gridStyle(columns: columnCount)
+ .gridStyle(columns: resolvedColumnCount)
.transaction { $0.animation = nil }
#if os(macOS)
.padding(8)