58 lines
1.9 KiB
Swift
58 lines
1.9 KiB
Swift
//
|
||
// SplitPickerView.swift
|
||
// Workouts
|
||
//
|
||
// Created by rzen on 7/13/25 at 7:17 PM.
|
||
//
|
||
// Copyright 2025 Rouslan Zenetl. All Rights Reserved.
|
||
//
|
||
|
||
import SwiftUI
|
||
import SwiftData
|
||
|
||
struct ExercisePickerView: View {
|
||
@Environment(\.modelContext) private var modelContext
|
||
@Environment(\.dismiss) private var dismiss
|
||
|
||
@Query(sort: [SortDescriptor(\ExerciseType.name)]) private var exerciseTypes: [ExerciseType]
|
||
|
||
// @Query(sort: [SortDescriptor(\Exercise.name)]) private var exercises: [Exercise]
|
||
|
||
var onExerciseSelected: (Exercise) -> Void
|
||
|
||
var body: some View {
|
||
NavigationStack {
|
||
VStack {
|
||
Form {
|
||
ForEach (exerciseTypes) { exerciseType in
|
||
if let exercises = exerciseType.exercises, !exercises.isEmpty {
|
||
let sortedExercises = exercises.sorted(by: { $0.name < $1.name })
|
||
Section (header: Text("\(exerciseType.name)")) {
|
||
List {
|
||
ForEach(sortedExercises) { exercise in
|
||
Button(action: {
|
||
onExerciseSelected(exercise)
|
||
dismiss()
|
||
}) {
|
||
ListItem(text: exercise.name)
|
||
}
|
||
.buttonStyle(.plain)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
.toolbar {
|
||
ToolbarItem(placement: .navigationBarLeading) {
|
||
Button("Cancel") {
|
||
dismiss()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|