67 lines
1.8 KiB
Swift
67 lines
1.8 KiB
Swift
//
|
|
// PatternGridListView.swift
|
|
// LifeGameApp
|
|
//
|
|
// Created by Yusuke Hosonuma on 2020/09/18.
|
|
//
|
|
|
|
import SwiftUI
|
|
import Core
|
|
|
|
extension PatternGridListView {
|
|
enum Style {
|
|
case grid
|
|
case horizontal
|
|
}
|
|
}
|
|
|
|
struct PatternGridListView: View {
|
|
@EnvironmentObject var authentication: Authentication
|
|
|
|
var style: Style
|
|
var patternURLs: [URL]
|
|
var didTapItem: (PatternItem) -> Void
|
|
var didToggleStar: (PatternItem) -> Void
|
|
|
|
var body: some View {
|
|
switch style {
|
|
case .grid:
|
|
ScrollView {
|
|
LazyVGrid(columns: [GridItem(.adaptive(minimum: 100))]) {
|
|
content()
|
|
}
|
|
.padding(16)
|
|
}
|
|
.padding(-16)
|
|
|
|
case .horizontal:
|
|
ScrollView(.horizontal) {
|
|
LazyHGrid(rows: [GridItem(.fixed(100))]) {
|
|
ForEach(patternURLs, id: \.self) { url in
|
|
PatternGridLoadView(
|
|
url: url,
|
|
isSignIn: authentication.isSignIn,
|
|
didTap: didTapItem,
|
|
didToggleStar: didToggleStar
|
|
)
|
|
.frame(width: 100) // TODO: タイトルの長さに横幅が伸びてしまうので暫定
|
|
}
|
|
}
|
|
.padding(.horizontal, 16)
|
|
}
|
|
.padding(.horizontal, -16)
|
|
}
|
|
}
|
|
|
|
func content() -> some View {
|
|
ForEach(patternURLs, id: \.self) { url in
|
|
PatternGridLoadView(
|
|
url: url,
|
|
isSignIn: authentication.isSignIn,
|
|
didTap: didTapItem,
|
|
didToggleStar: didToggleStar
|
|
)
|
|
}
|
|
}
|
|
}
|