ChWebsiteApp/CHDataManagement/Views/Generic/OptionalTextField.swift
2024-12-07 00:09:35 +01:00

32 lines
869 B
Swift

import SwiftUI
// A reusable component to handle optional strings with a TextField
struct OptionalTextField: View {
let titleKey: LocalizedStringKey
// The optional text that will be passed in and out of the component
@Binding var text: String?
let prompt: String?
init(_ titleKey: LocalizedStringKey, text: Binding<String?>, prompt: String? = nil) {
self.titleKey = titleKey
self._text = text
self.prompt = prompt
}
var body: some View {
TextField(titleKey, text: Binding(
get: {
// Convert `nil` to an empty string for display
text ?? ""
},
set: { newValue in
// Convert an empty string to `nil`
text = newValue.isEmpty ? nil : newValue
}
), prompt: prompt.map(Text.init))
}
}