This commit is contained in:
2025-07-13 18:25:40 -04:00
parent d4514805e9
commit 0545f5dbc7
6 changed files with 164 additions and 57 deletions

View File

@ -15,56 +15,67 @@ struct MuscleGroupsListView: View {
@Query(sort: [SortDescriptor(\MuscleGroup.name)]) var items: [MuscleGroup]
@State var showingAddSheet = false
@State var itemToEdit: MuscleGroup? = nil
@State var itemToDelete: MuscleGroup? = nil
var body: some View {
NavigationStack {
Form {
List {
ForEach (items) { item in
ListItem(title: item.name, count: item.muscles?.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)
Form {
List {
ForEach (items) { item in
ListItem(title: item.name, count: item.muscles?.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
MuscleGroupAddEditView(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
}
}
.navigationTitle("Muscle Groups")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
showingAddSheet.toggle()
}) {
Image(systemName: "plus")
}
Button("Cancel", role: .cancel) {
itemToDelete = nil
}
} message: {
Text("Are you sure you want to delete \(itemToDelete?.name ?? "this item")?")
}
}
.sheet(isPresented: $showingAddSheet) {
MuscleGroupAddEditView()
}
.sheet(item: $itemToEdit) {item in
MuscleGroupAddEditView(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")?")
}
}
}