refactored tooltip for securityCode

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-05-10 14:36:50 -05:00
parent 4a337c6fcb
commit 84314040d9

View File

@ -7,6 +7,7 @@
import Foundation
import UIKit
import VDSTokens
extension InputField {
@ -32,14 +33,73 @@ extension InputField {
override func updateView(_ inputField: InputField) {
minWidth = 88.0
isSecureTextEntry = true
let title: String = inputField.cardType.rawValue
let content: String = "looking for \(inputField.cardType.securityCodeLength) digits"
toolTipModel = .init(title: title, content: content)
toolTipModel = getToolTip(inputField)
super.updateView(inputField)
}
func getToolTip(_ inputField: InputField) -> Tooltip.TooltipModel {
let surface = inputField.surface
var contentView: UIView
var code3Label = Label().with {
$0.text = "Most credit or debit cards have a 3-digit security code on the back."
$0.isEnabled = true
$0.surface = surface
}
var code4Label = Label().with {
$0.text = "American Express cards have a 4-digit code on the front."
$0.isEnabled = true
$0.surface = surface
}
var code3ImageView = UIImageView().with {
$0.image = BundleManager.shared.image(for: "securityCode\(surface == .dark ? "-inverted": "")")
}
var code4ImageView = UIImageView().with {
$0.image = BundleManager.shared.image(for: "securityCodeAmex\(surface == .dark ? "-inverted": "")")
}
func stack(_ axis: NSLayoutConstraint.Axis = .vertical) -> UIStackView {
UIStackView().with {
$0.translatesAutoresizingMaskIntoConstraints = false
$0.axis = axis
$0.distribution = .fill
$0.alignment = .leading
$0.spacing = VDSLayout.space2X
}
}
func view3() -> UIView {
stack().with {
$0.addArrangedSubview(code3ImageView)
$0.addArrangedSubview(code3Label)
}
}
func view4() -> UIView {
stack().with {
$0.addArrangedSubview(code4ImageView)
$0.addArrangedSubview(code4Label)
}
}
let title: String = inputField.cardType.rawValue
switch inputField.cardType {
case .amex:
contentView = view4()
case .generic:
contentView = stack(.horizontal).with {
$0.addArrangedSubview(view3())
$0.addArrangedSubview(view4())
}
default:
contentView = view3()
}
return .init(contentView: contentView)
}
override func textField(_ inputField: InputField, textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// Allow only numbers and limit the length of text.
let allowedCharacters = CharacterSet.decimalDigits