wip
This commit is contained in:
@ -13,7 +13,11 @@ struct MuscleGroupAddEditView: View {
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
@Environment(\.modelContext) private var modelContext
|
||||
|
||||
@Bindable var model: MuscleGroup
|
||||
@State var model: MuscleGroup
|
||||
|
||||
init(model: MuscleGroup? = nil) {
|
||||
_model = State(initialValue: model ?? MuscleGroup(name: "", descr: ""))
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
@ -38,6 +42,9 @@ struct MuscleGroupAddEditView: View {
|
||||
|
||||
ToolbarItem(placement: .navigationBarTrailing) {
|
||||
Button("Save") {
|
||||
if model.modelContext == nil {
|
||||
modelContext.insert(model)
|
||||
}
|
||||
try? modelContext.save()
|
||||
dismiss()
|
||||
}
|
||||
|
@ -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")?")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user