updated input validators

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-04-30 16:01:26 -05:00
parent 1813661f7d
commit 06d56fd70e
2 changed files with 17 additions and 32 deletions

View File

@ -179,19 +179,14 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
} }
} }
open var errorText: String? { open var errorText: String? { didSet { setNeedsUpdate() } }
didSet {
updateContainerView()
updateErrorLabel()
setNeedsUpdate()
}
}
open var internalErrorText: String? { open var internalErrorText: String? {
didSet { guard let validator, !validator.isValid else { return nil }
updateContainerView() if let errorText, !errorText.isEmpty {
updateErrorLabel() return errorText
setNeedsUpdate() } else {
return validator.errorMessage
} }
} }
@ -313,6 +308,7 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
super.updateView() super.updateView()
updateRules() updateRules()
validator = FormFieldValidator<EntryFieldBase>(field: self, rules: rules) validator = FormFieldValidator<EntryFieldBase>(field: self, rules: rules)
validator?.validate()
updateContainerView() updateContainerView()
updateTitleLabel() updateTitleLabel()
@ -321,20 +317,6 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
backgroundColor = surface.color backgroundColor = surface.color
if let validator {
validator.validate()
if validator.isValid {
internalErrorText = nil
} else {
if let errorText, errorText.isEmpty {
internalErrorText = errorText
} else {
internalErrorText = validator.errorMessage
}
}
} else {
internalErrorText = nil
}
} }
//-------------------------------------------------- //--------------------------------------------------
@ -364,7 +346,7 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
rules.removeAll() rules.removeAll()
if self.required { if self.required {
let rule = RequiredRule() let rule = RequiredRule()
if let errorText { if let errorText, !errorText.isEmpty {
rule.errorMessage = errorText rule.errorMessage = errorText
} else if let labelText{ } else if let labelText{
rule.errorMessage = "You must enter a \(labelText)" rule.errorMessage = "You must enter a \(labelText)"

View File

@ -128,7 +128,7 @@ open class InputField: EntryFieldBase {
if showSuccess { if showSuccess {
state.insert(.success) state.insert(.success)
} else if textField.isFirstResponder && !showError && !hasInternalError { } else if textField.isFirstResponder {
state.insert(.focused) state.insert(.focused)
} }
@ -218,6 +218,10 @@ open class InputField: EntryFieldBase {
textField.isEnabled = isEnabled textField.isEnabled = isEnabled
textField.textColor = textFieldTextColorConfiguration.getColor(self) textField.textColor = textFieldTextColorConfiguration.getColor(self)
}
open override func updateErrorLabel() {
super.updateErrorLabel()
//show error or success //show error or success
if showError, let _ = errorText { if showError, let _ = errorText {
@ -234,11 +238,10 @@ open class InputField: EntryFieldBase {
statusIcon.surface = surface statusIcon.surface = surface
statusIcon.isHidden = !isEnabled statusIcon.isHidden = !isEnabled
} else { } else {
statusIcon.isHidden = true
successLabel.isHidden = true successLabel.isHidden = true
} }
}
}
open override func updateHelperLabel(){ open override func updateHelperLabel(){
//remove first //remove first
helperLabel.removeFromSuperview() helperLabel.removeFromSuperview()