// // AllWorkoutsListView.swift // Werkout_ios // // Created by Trey Tartt on 7/7/23. // import SwiftUI struct AllWorkoutsListView: View { @State var searchString: String = "" let workouts: [Workout] let selectedWorkout: ((Workout) -> Void) var filteredWorkouts: [Workout] { if !searchString.isEmpty, searchString.count > 0 { return workouts.filter({ if $0.name.lowercased().contains(searchString.lowercased()) { return true } if let equipment = $0.equipment?.joined(separator: "").lowercased(), equipment.contains(searchString.lowercased()) { return true } if let muscles = $0.muscles?.joined(separator: "").lowercased(), muscles.contains(searchString.lowercased()) { return true } return false }) } else { return workouts } } var refresh: (() -> Void) var body: some View { VStack { ScrollView { LazyVStack(spacing: 20) { ForEach(filteredWorkouts, id:\.id) { workout in WorkoutOverviewView(workout: workout) .padding([.leading, .trailing]) .contentShape(Rectangle()) .onTapGesture { selectedWorkout(workout) } } } } .refreshable { refresh() } TextField("Filter" ,text: $searchString) .padding() .textFieldStyle(OvalTextFieldStyle()) } } } struct AllWorkoutsListView_Previews: PreviewProvider { static var previews: some View { AllWorkoutsListView(workouts: PreviewData.allWorkouts(), selectedWorkout: { workout in }, refresh: { }) } }