add ActiveWorkoutSession logic, refactor Home, add additional sample data, add isDebug

This commit is contained in:
Felix Förtsch
2024-09-14 17:01:20 +02:00
parent f45d6288dd
commit 0a400ff349
27 changed files with 710 additions and 189 deletions
+60
View File
@@ -0,0 +1,60 @@
//
// ItemPicker.swift
// WorkoutsPlus
//
// Created by Felix Förtsch on 10.09.24.
//
import SwiftUI
import SwiftData
struct ItemPicker<Item: Nameable>: View {
@Environment(\.dismiss) private var dismiss
@State private var searchText = ""
var filteredItems: [Item] {
if searchText.isEmpty {
return items
} else {
return items.filter { $0.name.localizedCaseInsensitiveContains(searchText) }
}
}
var items: [Item]
@Binding var selectedItem: Item?
var body: some View {
List {
ForEach(filteredItems) { item in
HStack {
Text(item.name)
Spacer()
if item == selectedItem {
Image(systemName: "checkmark")
.foregroundColor(.blue)
}
}
// This .contentShape makes the whole row tappable
.contentShape(Rectangle())
.onTapGesture {
selectedItem = item
dismiss()
}
}
}
.searchable(text: $searchText)
.overlay {
if filteredItems.isEmpty {
ContentUnavailableView.search(text: searchText)
}
}
}
}
#Preview {
@Previewable @State var selectedWorkout: Workout? = nil
NavigationStack {
ItemPicker<Workout>(items: Workout.sampleData, selectedItem: $selectedWorkout)
}
.modelContainer(SampleData.shared.modelContainer)
}