diff --git a/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift b/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift index 1eebba46..5c6c9a30 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift @@ -9,6 +9,7 @@ import Foundation import UIKit extension InputField { + enum CreditCardType: CaseIterable { case generic case visa @@ -19,10 +20,6 @@ extension InputField { case jcb case chinaUnionPay - var image: UIImage { - return BundleManager.shared.image(for: imageName)! - } - var imageName: String { var imageName: String = "generic" switch self { @@ -192,4 +189,5 @@ extension InputField { return formattedMaskSection + " " + lastFourDigits } } + } diff --git a/VDS/Components/TextFields/InputField/FieldTypes/Date.swift b/VDS/Components/TextFields/InputField/FieldTypes/Date.swift index 24f9fe59..19656745 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/Date.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/Date.swift @@ -10,6 +10,44 @@ import UIKit extension InputField { + public enum DateFormat: String, CaseIterable { + case mmyy + case mmddyy + case mmddyyyy + + public var placeholderText: String { + switch self { + case .mmyy: "MM/YY" + case .mmddyy: "MM/DD/YY" + case .mmddyyyy: "MM/DD/YYYY" + } + } + + public var formatString: String { + switch self { + case .mmyy: "MM/yy" + case .mmddyy: "MM/dd/yy" + case .mmddyyyy: "MM/dd/yyyy" + } + } + + public var maxLength: Int { + switch self { + case .mmyy: 5 + case .mmddyy: 8 + case .mmddyyyy: 10 + } + } + + internal var separatorIndices: [Int] { + switch self { + case .mmyy: [2] + case .mmddyy: [2,4] + case .mmddyyyy: [2,4] + } + } + } + class DateHandler: FieldTypeHandler { static let shared = DateHandler() @@ -58,42 +96,4 @@ extension InputField { } } - public enum DateFormat: String, CaseIterable { - case mmyy - case mmddyy - case mmddyyyy - - public var placeholderText: String { - switch self { - case .mmyy: "MM/YY" - case .mmddyy: "MM/DD/YY" - case .mmddyyyy: "MM/DD/YYYY" - } - } - - public var formatString: String { - switch self { - case .mmyy: "MM/yy" - case .mmddyy: "MM/dd/yy" - case .mmddyyyy: "MM/dd/yyyy" - } - } - - public var maxLength: Int { - switch self { - case .mmyy: 5 - case .mmddyy: 8 - case .mmddyyyy: 10 - } - } - - internal var separatorIndices: [Int] { - switch self { - case .mmyy: [2] - case .mmddyy: [2,4] - case .mmddyyyy: [2,4] - } - } - } - } diff --git a/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift b/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift index cbf85633..3fa3e652 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/FieldType.swift @@ -10,6 +10,32 @@ import UIKit import VDSTokens extension InputField { + + public enum FieldType: String, CaseIterable { + case text, number, inlineAction, password, creditCard, telephone, date, securityCode + + func handler() -> FieldTypeHandler { + switch self { + case .text: + return TextHandler.shared + case .number: + return NumberHandler.shared + case .inlineAction: + return InlineActionHandler.shared + case .password: + return PasswordHandler.shared + case .creditCard: + return CreditCardHandler.shared + case .telephone: + return TelephoneHandler.shared + case .date: + return DateHandler.shared + case .securityCode: + return SecurityCodeHandler.shared + } + } + } + class FieldTypeHandler: NSObject { var keyboardType: UIKeyboardType var minWidth: CGFloat = 40.0 @@ -79,29 +105,5 @@ extension InputField { } } - - public enum FieldType: String, CaseIterable { - case text, number, inlineAction, password, creditCard, telephone, date, securityCode - - func handler() -> FieldTypeHandler { - switch self { - case .text: - return TextHandler.shared - case .number: - return NumberHandler.shared - case .inlineAction: - return InlineActionHandler.shared - case .password: - return PasswordHandler.shared - case .creditCard: - return CreditCardHandler.shared - case .telephone: - return TelephoneHandler.shared - case .date: - return DateHandler.shared - case .securityCode: - return SecurityCodeHandler.shared - } - } - } + } diff --git a/VDS/Components/TextFields/InputField/FieldTypes/Text.swift b/VDS/Components/TextFields/InputField/FieldTypes/Text.swift index 601560e7..38fd123c 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/Text.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/Text.swift @@ -9,6 +9,7 @@ import Foundation import UIKit extension InputField { + class TextHandler: FieldTypeHandler { static let shared = TextHandler() @@ -16,4 +17,5 @@ extension InputField { super.init() } } + }