You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LeCountdown/LeCountdown/Views/Countdown/RangeFormView.swift

77 lines
2.0 KiB

//
// RangeFormView.swift
// LeCountdown
//
// Created by Laurent Morvillier on 22/11/2023.
//
import SwiftUI
struct RangeFormView: View {
@Environment(\.dismiss) private var dismiss
@ObservedObject var timeRange: TimeRange
@State var namePlaceholder = "name"
@State var name: String = ""
@State var duration: TimeInterval = 0.0
var body: some View {
Form {
Section(header: Text("Name")) {
TextField(self.namePlaceholder, text: self.$name)
}
Section {
TimePickerView(duration: self.$duration)
} header: {
LabeledContent("Duration", value: self.duration.hourMinuteSecond)
.font(.footnote)
}
Section {
Button {
self._doneHandler()
} label: {
HStack {
Spacer()
Text("Done").fontWeight(.bold)
Spacer()
}
}
}
}.onAppear {
if let name = self.timeRange.name, !name.isEmpty {
self.namePlaceholder = name
}
self.duration = self.timeRange.duration
}
}
fileprivate func _doneHandler() {
if self.name.isEmpty {
self.timeRange.name = self.namePlaceholder
} else {
self.timeRange.name = self.name
}
self.timeRange.duration = self.duration
self.dismiss()
}
}
struct RangeFormView_Previews: PreviewProvider {
static var previews: some View {
Text("tilting crash")
// RangeFormView(
// timeRange: TimeRange.fake(context: PersistenceController.preview.container.viewContext),
// isPresented: .constant(true))
// .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
}