60 lines
1.5 KiB
Swift
60 lines
1.5 KiB
Swift
//
|
|
// ContentView.swift
|
|
// Piper
|
|
//
|
|
// Created by Javier Cicchelli on 04/10/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
import SwiftData
|
|
|
|
struct ContentView: View {
|
|
@Environment(\.modelContext) private var modelContext
|
|
@Query private var items: [Item]
|
|
|
|
var body: some View {
|
|
NavigationSplitView {
|
|
List {
|
|
ForEach(items) { item in
|
|
NavigationLink {
|
|
Text("Item at \(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))")
|
|
} label: {
|
|
Text(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))
|
|
}
|
|
}
|
|
.onDelete(perform: deleteItems)
|
|
}
|
|
.navigationSplitViewColumnWidth(min: 180, ideal: 200)
|
|
.toolbar {
|
|
ToolbarItem {
|
|
Button(action: addItem) {
|
|
Label("Add Item", systemImage: "plus")
|
|
}
|
|
}
|
|
}
|
|
} detail: {
|
|
Text("Select an item")
|
|
}
|
|
}
|
|
|
|
private func addItem() {
|
|
withAnimation {
|
|
let newItem = Item(timestamp: Date())
|
|
modelContext.insert(newItem)
|
|
}
|
|
}
|
|
|
|
private func deleteItems(offsets: IndexSet) {
|
|
withAnimation {
|
|
for index in offsets {
|
|
modelContext.delete(items[index])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
ContentView()
|
|
.modelContainer(for: Item.self, inMemory: true)
|
|
}
|