Added unfinished LabelledUIKitTextFieldWithValidationLabel
This commit is contained in:
parent
fb57a41ca4
commit
12cfd95300
|
@ -0,0 +1,87 @@
|
|||
import SwiftUI
|
||||
import BankingUiSwift
|
||||
|
||||
|
||||
// TODO: finish and then use it in TransferMoneyDialog
|
||||
struct LabelledUIKitTextFieldWithValidationLabel: View {
|
||||
|
||||
let label: LocalizedStringKey
|
||||
|
||||
@Binding var text: String
|
||||
|
||||
var placeholder: String = ""
|
||||
|
||||
var keyboardType: UIKeyboardType = .default
|
||||
var isPasswordField: Bool = false
|
||||
|
||||
var focusOnStart = false
|
||||
var focusNextTextFieldOnReturnKeyPress = false
|
||||
|
||||
@State var focusTextField: Bool = false
|
||||
|
||||
var actionOnReturnKeyPress: (() -> Bool)? = nil
|
||||
|
||||
var textChanged: ((String) -> Void)? = nil
|
||||
|
||||
var validateInput: ((String) -> ValidationResult)? = nil
|
||||
|
||||
|
||||
// @State private var validationResult: ValidationResult? = nil
|
||||
@State private var validationResult: ValidationResult? = ValidationResult(inputString: "", validationSuccessful: false, didCorrectString: true, correctedInputString: "Hallo", validationError: "Unzulaessiges Zeichen eingegeben: $", validationHint: nil)
|
||||
// var validationError: Binding<String?> = .constant(nil)
|
||||
|
||||
@State private var didJustCorrectValue = false
|
||||
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Spacer()
|
||||
|
||||
LabelledUIKitTextField(label: label, text: $text, focusOnStart: focusOnStart, focusNextTextFieldOnReturnKeyPress: focusNextTextFieldOnReturnKeyPress, actionOnReturnKeyPress: actionOnReturnKeyPress) { newValue in
|
||||
self.enteredValueChanged(newValue)
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
|
||||
Spacer()
|
||||
|
||||
validationResult.map { validationResult in
|
||||
ValidationLabel(validationResult)
|
||||
}
|
||||
}
|
||||
.listRowInsets(EdgeInsets())
|
||||
}
|
||||
|
||||
|
||||
private func enteredValueChanged(_ newValue: String) {
|
||||
if (didJustCorrectValue == false) {
|
||||
if let validationResult = validateInput?(newValue) {
|
||||
self.validationResult = validationResult.didCorrectString || validationResult.validationSuccessful == false ? validationResult : nil
|
||||
|
||||
if (validationResult.didCorrectString) {
|
||||
didJustCorrectValue = true
|
||||
|
||||
self.text = validationResult.correctedInputString
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
didJustCorrectValue = false
|
||||
}
|
||||
|
||||
textChanged?(newValue)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
struct LabelledUIKitTextFieldWithValidationLabel_Previews: PreviewProvider {
|
||||
|
||||
static var previews: some View {
|
||||
Form {
|
||||
Section {
|
||||
LabelledUIKitTextFieldWithValidationLabel(label: "Label", text: .constant("Text"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue