This commit is contained in:
2025-07-13 17:51:52 -04:00
parent 6cd44579e2
commit d4514805e9
33 changed files with 1295 additions and 80 deletions

View File

@ -0,0 +1,78 @@
//
// SplitsListView.swift
// Workouts
//
// Created by rzen on 7/13/25 at 10:27AM.
//
// Copyright 2025 Rouslan Zenetl. All Rights Reserved.
//
import SwiftUI
import SwiftData
struct SplitsListView: View {
@Environment(\.dismiss) private var dismiss
@Environment(\.modelContext) private var modelContext
@Query(sort: [SortDescriptor(\Split.name)]) var items: [Split]
@State var itemToEdit: Split? = nil
@State var itemToDelete: Split? = nil
private func save () {
try? modelContext.save()
}
var body: some View {
NavigationStack {
Form {
List {
ForEach (items) { item in
ListItem(
title: item.name,
count: item.exercises?.count
)
.swipeActions(edge: .trailing, allowsFullSwipe: false) {
Button (role: .destructive) {
itemToDelete = item
} label: {
Label("Delete", systemImage: "trash")
}
Button {
itemToEdit = item
} label: {
Label("Edit", systemImage: "pencil")
}
.tint(.indigo)
}
}
}
.navigationTitle("Muscle Groups")
}
.sheet(item: $itemToEdit) {item in
SplitAddEditView(model: item)
}
.confirmationDialog(
"Delete?",
isPresented: Binding<Bool>(
get: { itemToDelete != nil },
set: { if !$0 { itemToDelete = nil } }
),
titleVisibility: .visible
) {
Button("Delete", role: .destructive) {
if let itemToDelete = itemToDelete {
modelContext.delete(itemToDelete)
try? modelContext.save()
self.itemToDelete = nil
}
}
Button("Cancel", role: .cancel) {
itemToDelete = nil
}
} message: {
Text("Are you sure you want to delete \(itemToDelete?.name ?? "this item")?")
}
}
}
}