Aug 19 - Fixed photo-loss issue

This commit is contained in:
Nguyen Ngo
2026-08-19 10:31:20 -04:00
parent 7cbc514c39
commit e31cd7e1ff
13 changed files with 856 additions and 149 deletions
@@ -183,19 +183,45 @@ struct DateFieldView: View {
private var dateBinding: Binding<Date> {
Binding(
get: {
ISO8601DateFormatter().date(from: value) ?? Date()
},
set: {
value = ISO8601DateFormatter().string(from: $0)
}
get: { FormDateFormat.date(from: value) ?? Date() },
set: { value = FormDateFormat.string(from: $0) }
)
}
var body: some View {
DatePicker("", selection: dateBinding, displayedComponents: .date)
.labelsHidden()
// Same two problems as CellDatePicker, same fix see the comments
// there. Empty must look empty, and the stored format is "yyyy-MM-dd"
// to match the web's <input type="date">, not an ISO 8601 timestamp.
if value.isEmpty {
Button {
value = FormDateFormat.string(from: Date())
} label: {
HStack(spacing: 6) {
Image(systemName: "calendar")
Text("Set date")
}
.font(.callout)
.foregroundStyle(Color(.placeholderText))
.padding(10)
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color(.systemBackground))
.clipShape(RoundedRectangle(cornerRadius: 8))
.overlay(RoundedRectangle(cornerRadius: 8)
.stroke(Color(.systemGray4), lineWidth: 1))
}
.buttonStyle(.plain)
} else {
HStack(spacing: 6) {
DatePicker("", selection: dateBinding, displayedComponents: .date)
.labelsHidden()
Button { value = "" } label: {
Image(systemName: "xmark.circle.fill")
.foregroundStyle(.secondary)
}
.buttonStyle(.plain)
}
.frame(maxWidth: .infinity, alignment: .leading)
}
}
}