From d7fc65612f930c9b8fdc6300add3a5b14966cd74 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 10 May 2024 17:23:04 -0500 Subject: [PATCH] fixed password link bug Signed-off-by: Matt Bruce --- .../InputField/FieldTypes/FieldType.swift | 8 +++---- .../InputField/FieldTypes/Password.swift | 14 +++++++++++++ .../TextFields/InputField/InputField.swift | 21 +++++++++---------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift b/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift index de04aa1d..db45d767 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift @@ -100,11 +100,11 @@ extension InputField { func appendRules(_ inputField: InputField) {} - func textFieldDidBeginEditing(_ inputField: InputField, textField: UITextField) { - } + func textFieldDidBeginEditing(_ inputField: InputField, textField: UITextField) { } - func textFieldDidEndEditing(_ inputField: InputField, textField: UITextField) { - } + func textFieldDidEndEditing(_ inputField: InputField, textField: UITextField) {} + + func textFieldDidChangeSelection(_ inputField: InputField, textField: UITextField) {} func textField(_ inputField: InputField, textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { return true diff --git a/VDS/Components/TextFields/InputField/FieldTypes/Password.swift b/VDS/Components/TextFields/InputField/FieldTypes/Password.swift index 892a8b9b..00c00a0d 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/Password.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/Password.swift @@ -48,6 +48,20 @@ extension InputField { minWidth = 62.0 super.updateView(inputField) + + updateLink(inputField) + } + + func updateLink(_ inputField: InputField) { + if let text = inputField.textField.text, !text.isEmpty { + inputField.actionTextLink.isHidden = false + } else { + inputField.actionTextLink.isHidden = true + } + } + + override func textFieldDidChangeSelection(_ inputField: InputField, textField: UITextField) { + updateLink(inputField) } } diff --git a/VDS/Components/TextFields/InputField/InputField.swift b/VDS/Components/TextFields/InputField/InputField.swift index 57d6060a..e11d1253 100644 --- a/VDS/Components/TextFields/InputField/InputField.swift +++ b/VDS/Components/TextFields/InputField/InputField.swift @@ -173,17 +173,6 @@ open class InputField: EntryFieldBase { textField.heightAnchor.constraint(equalToConstant: 20).isActive = true textField.delegate = self - textField - .textPublisher - .sink { [weak self] newText in - guard let self else { return } - print("textPublisher newText: \(newText)") - if self.fieldType.handler().validateOnChange { - self.validate() - } - self.sendActions(for: .valueChanged) - }.store(in: &subscribers) - stackView.addArrangedSubview(successLabel) stackView.setCustomSpacing(8, after: successLabel) @@ -338,6 +327,16 @@ extension InputField: UITextFieldDelegate { validate() } + public func textFieldDidChangeSelection(_ textField: UITextField) { + fieldType.handler().textFieldDidChangeSelection(self, textField: textField) + if fieldType.handler().validateOnChange { + validate() + } else { + setNeedsUpdate() + } + sendActions(for: .valueChanged) + } + public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { return fieldType.handler().textField(self, textField: textField, shouldChangeCharactersIn: range, replacementString: string) }