-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContentView.swift
More file actions
59 lines (54 loc) · 1.93 KB
/
ContentView.swift
File metadata and controls
59 lines (54 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//
// ContentView.swift
// FlowStackExample
//
// Created by Charles Hieger on 6/27/23.
//
import SwiftUI
import FlowStack
struct ContentView: View {
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
let cornerRadius: CGFloat = 24
var body: some View {
FlowStack {
ScrollView {
Group {
if horizontalSizeClass == .compact {
LazyVStack(alignment: .center, spacing: 24, pinnedViews: [], content: {
content
})
} else {
LazyVGrid(columns: [GridItem(.flexible(), spacing: 16), GridItem(.flexible())], alignment: .center, spacing: 16, content: {
content
})
}
}
.padding(.horizontal)
}
.flowDestination(for: Product.self) { product in
ProductDetails(product: product)
.accessibilityElement(children: .contain)
.accessibilityRespondsToUserInteraction(true)
.accessibilityLabel("ProductDetails from flowDestination in contentView")
}
}
.accessibilityElement(children: .contain)
}
var content: some View {
ForEach(Product.allProducts) { product in
FlowLink(value: product, configuration: .init(cornerRadius: cornerRadius)) {
ProductRow(product: product, cornerRadius: cornerRadius)
.accessibilityElement(children: .combine)
}
.contentShape(Rectangle())
.accessibilityRespondsToUserInteraction(true)
.accessibilityElement(children: .ignore)
.accessibilityLabel("Product \(product.name)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}