redfactored handlers to base
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
14c578edbd
commit
a656561073
@ -75,18 +75,17 @@ extension InputField {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CreditCardHandler: NSObject, FieldTypeHandler {
|
class CreditCardHandler: BaseFieldType {
|
||||||
static let shared = CreditCardHandler()
|
static let shared = CreditCardHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .numberPad }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
self.keyboardType = .numberPad
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {
|
override func appendRules(for inputField: InputField) {
|
||||||
if let text = inputField.textField.text, text.count > 0 {
|
if let text = inputField.textField.text, text.count > 0 {
|
||||||
let rule = CharacterCountRule().copyWith {
|
let rule = CharacterCountRule().copyWith {
|
||||||
$0.maxLength = inputField.creditCardType.maxLength
|
$0.maxLength = inputField.creditCardType.maxLength
|
||||||
|
|||||||
@ -10,18 +10,17 @@ import UIKit
|
|||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
|
||||||
class DateHandler: NSObject, FieldTypeHandler {
|
class DateHandler: BaseFieldType {
|
||||||
static let shared = DateHandler()
|
static let shared = DateHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .numberPad }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
self.keyboardType = .numberPad
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {
|
override func appendRules(for inputField: InputField) {
|
||||||
if let text = inputField.textField.text, text.count > 0 {
|
if let text = inputField.textField.text, text.count > 0 {
|
||||||
let rule = CharacterCountRule().copyWith {
|
let rule = CharacterCountRule().copyWith {
|
||||||
$0.maxLength = inputField.dateFormat.maxLength
|
$0.maxLength = inputField.dateFormat.maxLength
|
||||||
|
|||||||
@ -7,14 +7,81 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
import UIKit
|
import UIKit
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
protocol FieldTypeHandler: UITextFieldDelegate {
|
protocol FieldTypeHandler: UITextFieldDelegate {
|
||||||
var keyboardType: UIKeyboardType { get }
|
var keyboardType: UIKeyboardType { get }
|
||||||
|
var minWidth: CGFloat { get set }
|
||||||
|
var leftImageName: String? { get set }
|
||||||
|
var actionModel: InputField.TextLinkModel? { get set }
|
||||||
|
var toolTipModel: Tooltip.TooltipModel? { get set }
|
||||||
|
var isSecureTextEntry: Bool { get set }
|
||||||
|
var placeholderText: String? { get set }
|
||||||
|
|
||||||
func configure(for inputField: InputField)
|
func configure(for inputField: InputField)
|
||||||
func appendRules(for inputField: InputField)
|
func appendRules(for inputField: InputField)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BaseFieldType: NSObject, FieldTypeHandler {
|
||||||
|
var keyboardType: UIKeyboardType
|
||||||
|
var minWidth: CGFloat = 40.0
|
||||||
|
var leftImageName: String?
|
||||||
|
var actionModel: InputField.TextLinkModel?
|
||||||
|
var toolTipModel: Tooltip.TooltipModel?
|
||||||
|
var isSecureTextEntry = false
|
||||||
|
var placeholderText: String?
|
||||||
|
|
||||||
|
internal override init() {
|
||||||
|
keyboardType = .default
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
func configure(for inputField: InputField) {
|
||||||
|
|
||||||
|
//textField
|
||||||
|
inputField.textField.isSecureTextEntry = isSecureTextEntry
|
||||||
|
|
||||||
|
//leftIcon
|
||||||
|
if let leftImageName {
|
||||||
|
inputField.leftImageView.image = BundleManager.shared.image(for: leftImageName)?.withTintColor(inputField.iconColorConfiguration.getColor(inputField))
|
||||||
|
}
|
||||||
|
inputField.leftImageView.isHidden = leftImageName == nil
|
||||||
|
|
||||||
|
//actionLink
|
||||||
|
inputField.actionTextLink.surface = inputField.surface
|
||||||
|
if let actionModel {
|
||||||
|
inputField.actionTextLink.text = actionModel.text
|
||||||
|
inputField.actionTextLink.onClick = actionModel.onClick
|
||||||
|
inputField.actionTextLink.isHidden = false
|
||||||
|
inputField.containerStackView.setCustomSpacing(VDSLayout.space2X, after: inputField.statusIcon)
|
||||||
|
} else {
|
||||||
|
inputField.actionTextLink.isHidden = true
|
||||||
|
inputField.containerStackView.setCustomSpacing(0, after: inputField.statusIcon)
|
||||||
|
}
|
||||||
|
|
||||||
|
//set the width constraints
|
||||||
|
if let width = inputField.width, width > minWidth {
|
||||||
|
inputField.widthConstraint?.constant = width
|
||||||
|
inputField.widthConstraint?.isActive = true
|
||||||
|
inputField.minWidthConstraint?.isActive = false
|
||||||
|
} else {
|
||||||
|
inputField.minWidthConstraint?.constant = minWidth
|
||||||
|
inputField.widthConstraint?.isActive = false
|
||||||
|
inputField.minWidthConstraint?.isActive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
//placeholder
|
||||||
|
inputField.textField.placeholder = placeholderText
|
||||||
|
|
||||||
|
//tooltip
|
||||||
|
inputField.tooltipModel = toolTipModel
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendRules(for inputField: InputField) {}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public enum FieldType: String, CaseIterable {
|
public enum FieldType: String, CaseIterable {
|
||||||
case text, number, inlineAction, password, creditCard, telephone, date, securityCode
|
case text, number, inlineAction, password, creditCard, telephone, date, securityCode
|
||||||
|
|
||||||
@ -38,10 +105,5 @@ extension InputField {
|
|||||||
return SecurityCodeHandler.shared
|
return SecurityCodeHandler.shared
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal var keyboardType: UIKeyboardType {
|
|
||||||
handler().keyboardType
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,18 +10,16 @@ import UIKit
|
|||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
|
||||||
class InlineActionHandler: NSObject, FieldTypeHandler {
|
class InlineActionHandler: BaseFieldType {
|
||||||
static let shared = InlineActionHandler()
|
static let shared = InlineActionHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .default }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {}
|
override func appendRules(for inputField: InputField) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,18 +10,18 @@ import UIKit
|
|||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
|
||||||
class NumberHandler: NSObject, FieldTypeHandler {
|
class NumberHandler: BaseFieldType {
|
||||||
static let shared = NumberHandler()
|
static let shared = NumberHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .numberPad }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
self.keyboardType = .numberPad
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
|
override func appendRules(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,18 +18,16 @@ extension InputField {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PasswordHandler: NSObject, FieldTypeHandler {
|
class PasswordHandler: BaseFieldType {
|
||||||
static let shared = PasswordHandler()
|
static let shared = PasswordHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .default }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {}
|
override func appendRules(for inputField: InputField) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,18 +10,17 @@ import UIKit
|
|||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
|
||||||
class SecurityCodeHandler: NSObject, FieldTypeHandler {
|
class SecurityCodeHandler: BaseFieldType {
|
||||||
static let shared = SecurityCodeHandler()
|
static let shared = SecurityCodeHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .numberPad }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
self.keyboardType = .numberPad
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {}
|
override func appendRules(for inputField: InputField) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,18 +41,17 @@ extension InputField {
|
|||||||
return formattedNumber
|
return formattedNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
class TelephoneHandler: NSObject, FieldTypeHandler {
|
class TelephoneHandler: BaseFieldType {
|
||||||
static let shared = TelephoneHandler()
|
static let shared = TelephoneHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .phonePad }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
self.keyboardType = .phonePad
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {
|
override func appendRules(for inputField: InputField) {
|
||||||
if let text = inputField.textField.text, text.count > 0 {
|
if let text = inputField.textField.text, text.count > 0 {
|
||||||
let rule = CharacterCountRule().copyWith {
|
let rule = CharacterCountRule().copyWith {
|
||||||
$0.maxLength = "XXX-XXX-XXXX".count
|
$0.maxLength = "XXX-XXX-XXXX".count
|
||||||
@ -65,3 +64,4 @@ extension InputField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,17 +9,15 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
class TextHandler: NSObject, FieldTypeHandler {
|
class TextHandler: BaseFieldType {
|
||||||
static let shared = TextHandler()
|
static let shared = TextHandler()
|
||||||
|
|
||||||
var keyboardType: UIKeyboardType { .default }
|
|
||||||
|
|
||||||
private override init() {
|
private override init() {
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(for inputField: InputField) {}
|
override func configure(for inputField: InputField) {}
|
||||||
|
|
||||||
func appendRules(for inputField: InputField) {}
|
override func appendRules(for inputField: InputField) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -256,6 +256,7 @@ open class InputField: EntryFieldBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open func updateFieldType() {
|
open func updateFieldType() {
|
||||||
|
fieldType.handler().configure(for: self)
|
||||||
|
|
||||||
var minWidth: CGFloat = 40.0
|
var minWidth: CGFloat = 40.0
|
||||||
var leftImageName: String?
|
var leftImageName: String?
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user