mild refactoring.
This commit is contained in:
parent
def376c67a
commit
570facbcea
@ -28,7 +28,7 @@ import UIKit
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
public var baseDropdownEntryFieldModel: BaseDropdownEntryFieldModel? {
|
public var baseDropdownEntryFieldModel: BaseDropdownEntryFieldModel? {
|
||||||
return model as? BaseDropdownEntryFieldModel
|
model as? BaseDropdownEntryFieldModel
|
||||||
}
|
}
|
||||||
var additionalData: [AnyHashable: Any]?
|
var additionalData: [AnyHashable: Any]?
|
||||||
|
|
||||||
@ -87,9 +87,9 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override func dismissFieldInput(_ sender: Any?) {
|
public override func dismissFieldInput(_ sender: Any?) {
|
||||||
performDropdownAction()
|
performDropdownAction()
|
||||||
super.dismissFieldInput(sender)
|
super.dismissFieldInput(sender)
|
||||||
}
|
}
|
||||||
|
|
||||||
func performDropdownAction() {
|
func performDropdownAction() {
|
||||||
if let baseDropdownEntryFieldModel = baseDropdownEntryFieldModel, let actionModel = baseDropdownEntryFieldModel.action {
|
if let baseDropdownEntryFieldModel = baseDropdownEntryFieldModel, let actionModel = baseDropdownEntryFieldModel.action {
|
||||||
|
|||||||
@ -69,6 +69,7 @@ import UIKit
|
|||||||
datePicker = UIDatePicker.addDatePicker(to: textField)
|
datePicker = UIDatePicker.addDatePicker(to: textField)
|
||||||
datePicker?.addTarget(self, action: #selector(pickerValueChanged), for: .valueChanged)
|
datePicker?.addTarget(self, action: #selector(pickerValueChanged), for: .valueChanged)
|
||||||
datePicker?.timeZone = NSTimeZone.system
|
datePicker?.timeZone = NSTimeZone.system
|
||||||
|
textField.inputView = datePicker
|
||||||
UIToolbar.addDismissToolbar(to: textField, delegate: self, action: #selector(dismissFieldInput))
|
UIToolbar.addDismissToolbar(to: textField, delegate: self, action: #selector(dismissFieldInput))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -75,7 +75,7 @@ import UIKit
|
|||||||
private var selectedDigitBox: DigitBox?
|
private var selectedDigitBox: DigitBox?
|
||||||
|
|
||||||
public var digitEntryModel: DigitEntryFieldModel? {
|
public var digitEntryModel: DigitEntryFieldModel? {
|
||||||
return model as? DigitEntryFieldModel
|
model as? DigitEntryFieldModel
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -83,7 +83,7 @@ import UIKit
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override var isEnabled: Bool {
|
public override var isEnabled: Bool {
|
||||||
get { return super.isEnabled }
|
get { super.isEnabled }
|
||||||
set (enabled) {
|
set (enabled) {
|
||||||
digitBoxes.forEach { $0.isEnabled = enabled }
|
digitBoxes.forEach { $0.isEnabled = enabled }
|
||||||
super.isEnabled = enabled
|
super.isEnabled = enabled
|
||||||
@ -91,7 +91,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override var showError: Bool {
|
public override var showError: Bool {
|
||||||
get { return super.showError }
|
get { super.showError }
|
||||||
set (error) {
|
set (error) {
|
||||||
digitBoxes.forEach { $0.showError = error }
|
digitBoxes.forEach { $0.showError = error }
|
||||||
super.showError = error
|
super.showError = error
|
||||||
@ -99,7 +99,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override var isLocked: Bool {
|
public override var isLocked: Bool {
|
||||||
get { return super.isLocked }
|
get { super.isLocked }
|
||||||
set (locked) {
|
set (locked) {
|
||||||
digitBoxes.forEach { $0.isLocked = locked }
|
digitBoxes.forEach { $0.isLocked = locked }
|
||||||
super.isLocked = locked
|
super.isLocked = locked
|
||||||
@ -162,7 +162,7 @@ import UIKit
|
|||||||
|
|
||||||
/// If you're using a MFViewController, you must set this to it
|
/// If you're using a MFViewController, you must set this to it
|
||||||
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
|
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
|
||||||
get { return textField.delegate }
|
get { textField.delegate }
|
||||||
set {
|
set {
|
||||||
textField.delegate = self
|
textField.delegate = self
|
||||||
proprietorTextDelegate = newValue
|
proprietorTextDelegate = newValue
|
||||||
@ -450,11 +450,11 @@ extension DigitEntryField {
|
|||||||
|
|
||||||
@objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
@objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
||||||
|
|
||||||
return proprietorTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true
|
proprietorTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
|
@objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
|
||||||
|
|
||||||
return proprietorTextDelegate?.textFieldShouldEndEditing?(textField) ?? true
|
proprietorTextDelegate?.textFieldShouldEndEditing?(textField) ?? true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,7 +58,7 @@ import UIKit
|
|||||||
|
|
||||||
/// Toggles enabled (original) or disabled UI.
|
/// Toggles enabled (original) or disabled UI.
|
||||||
public var isEnabled: Bool {
|
public var isEnabled: Bool {
|
||||||
get { return entryFieldContainer.isEnabled }
|
get { entryFieldContainer.isEnabled }
|
||||||
set (enabled) {
|
set (enabled) {
|
||||||
self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
|
self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
|
||||||
self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
|
self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
|
||||||
@ -69,7 +69,7 @@ import UIKit
|
|||||||
|
|
||||||
/// Toggles error or original UI.
|
/// Toggles error or original UI.
|
||||||
public var showError: Bool {
|
public var showError: Bool {
|
||||||
get { return entryFieldContainer.showError }
|
get { entryFieldContainer.showError }
|
||||||
set (error) {
|
set (error) {
|
||||||
self.feedback = error ? errorMessage : entryFieldModel?.feedback
|
self.feedback = error ? errorMessage : entryFieldModel?.feedback
|
||||||
self.feedbackLabel.textColor = error ? entryFieldModel?.errorTextColor?.uiColor ?? .mvmBlack : .mvmBlack
|
self.feedbackLabel.textColor = error ? entryFieldModel?.errorTextColor?.uiColor ?? .mvmBlack : .mvmBlack
|
||||||
@ -84,7 +84,7 @@ import UIKit
|
|||||||
|
|
||||||
/// Toggles original or locked UI.
|
/// Toggles original or locked UI.
|
||||||
public var isLocked: Bool {
|
public var isLocked: Bool {
|
||||||
get { return entryFieldContainer.isLocked }
|
get { entryFieldContainer.isLocked }
|
||||||
set (locked) {
|
set (locked) {
|
||||||
self.entryFieldContainer.isLocked = locked
|
self.entryFieldContainer.isLocked = locked
|
||||||
self.entryFieldModel?.locked = locked
|
self.entryFieldModel?.locked = locked
|
||||||
@ -93,7 +93,7 @@ import UIKit
|
|||||||
|
|
||||||
/// Toggles selected or original (unselected) UI.
|
/// Toggles selected or original (unselected) UI.
|
||||||
public var isSelected: Bool {
|
public var isSelected: Bool {
|
||||||
get { return entryFieldContainer.isSelected }
|
get { entryFieldContainer.isSelected }
|
||||||
set (selected) {
|
set (selected) {
|
||||||
self.entryFieldContainer.isSelected = selected
|
self.entryFieldContainer.isSelected = selected
|
||||||
self.entryFieldModel?.selected = selected
|
self.entryFieldModel?.selected = selected
|
||||||
@ -102,7 +102,7 @@ import UIKit
|
|||||||
|
|
||||||
/// Sets the text of titleLabel
|
/// Sets the text of titleLabel
|
||||||
public var title: String? {
|
public var title: String? {
|
||||||
get { return titleLabel.text }
|
get { titleLabel.text }
|
||||||
set (newText) {
|
set (newText) {
|
||||||
titleLabel.text = newText
|
titleLabel.text = newText
|
||||||
setAccessibilityString(newText)
|
setAccessibilityString(newText)
|
||||||
@ -111,13 +111,13 @@ import UIKit
|
|||||||
|
|
||||||
/// Override this to conveniently get/set the textfield(s).
|
/// Override this to conveniently get/set the textfield(s).
|
||||||
public var text: String? {
|
public var text: String? {
|
||||||
get { return nil }
|
get { nil }
|
||||||
set { fatalError("You MUST override EntryField's 'text' variable in your subclass.") }
|
set { fatalError("You MUST override EntryField's 'text' variable in your subclass.") }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets feedback text in the textField.
|
/// Sets feedback text in the textField.
|
||||||
public var feedback: String? {
|
public var feedback: String? {
|
||||||
get { return feedbackLabel.text }
|
get { feedbackLabel.text }
|
||||||
set (newFeedback) {
|
set (newFeedback) {
|
||||||
feedbackLabel.text = newFeedback
|
feedbackLabel.text = newFeedback
|
||||||
feedbackLabel.accessibilityElementsHidden = feedbackLabel.text?.isEmpty ?? true
|
feedbackLabel.accessibilityElementsHidden = feedbackLabel.text?.isEmpty ?? true
|
||||||
@ -126,7 +126,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var entryFieldModel: EntryFieldModel? {
|
public var entryFieldModel: EntryFieldModel? {
|
||||||
return model as? EntryFieldModel
|
model as? EntryFieldModel
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -223,7 +223,7 @@ import UIKit
|
|||||||
entryFieldContainer.refreshUI()
|
entryFieldContainer.refreshUI()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Intended to add the interactive content (i.e. textField) to the entryFieldContainer.
|
/// Intended to add the interactive content (i.e. textField) to the entryFieldContainer.
|
||||||
@objc open func setupFieldContainerContent(_ container: UIView) {
|
@objc open func setupFieldContainerContent(_ container: UIView) {
|
||||||
// To Be Overriden
|
// To Be Overriden
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,9 +140,9 @@ import Foundation
|
|||||||
try container.encodeIfPresent(selected, forKey: .selected)
|
try container.encodeIfPresent(selected, forKey: .selected)
|
||||||
try container.encodeIfPresent(errorTextColor, forKey: .errorTextColor)
|
try container.encodeIfPresent(errorTextColor, forKey: .errorTextColor)
|
||||||
try container.encodeIfPresent(errorMessage, forKey: .errorMessage)
|
try container.encodeIfPresent(errorMessage, forKey: .errorMessage)
|
||||||
try container.encode(enabled, forKey: .enabled)
|
|
||||||
try container.encode(hideBorders, forKey: .hideBorders)
|
|
||||||
try container.encodeIfPresent(fieldKey, forKey: .fieldKey)
|
try container.encodeIfPresent(fieldKey, forKey: .fieldKey)
|
||||||
try container.encodeIfPresent(groupName, forKey: .groupName)
|
try container.encodeIfPresent(groupName, forKey: .groupName)
|
||||||
|
try container.encode(enabled, forKey: .enabled)
|
||||||
|
try container.encode(hideBorders, forKey: .hideBorders)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ open class ItemDropdownEntryField: BaseDropdownEntryField {
|
|||||||
public var observeDropdownSelection: ((String)->())?
|
public var observeDropdownSelection: ((String)->())?
|
||||||
|
|
||||||
public var itemDropdownEntryFieldModel: ItemDropdownEntryFieldModel? {
|
public var itemDropdownEntryFieldModel: ItemDropdownEntryFieldModel? {
|
||||||
return model as? ItemDropdownEntryFieldModel
|
model as? ItemDropdownEntryFieldModel
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
public override func formFieldValue() -> AnyHashable? {
|
public override func formFieldValue() -> AnyHashable? {
|
||||||
guard !options.isEmpty,
|
guard !options.isEmpty,
|
||||||
let index = selectedIndex
|
let index = selectedIndex
|
||||||
else { return nil }
|
else { return nil }
|
||||||
|
|
||||||
return options[index]
|
return options[index]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import MVMCore
|
|||||||
|
|
||||||
/// If you're using a MFViewController, you must set this to it
|
/// If you're using a MFViewController, you must set this to it
|
||||||
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
|
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
|
||||||
get { return textField.delegate }
|
get { textField.delegate }
|
||||||
set {
|
set {
|
||||||
textField.delegate = self
|
textField.delegate = self
|
||||||
proprietorTextDelegate = newValue
|
proprietorTextDelegate = newValue
|
||||||
@ -44,7 +44,7 @@ import MVMCore
|
|||||||
|
|
||||||
/// Formats the MDN when setting and removes format of MDN when reading.
|
/// Formats the MDN when setting and removes format of MDN when reading.
|
||||||
public var mdn: String? {
|
public var mdn: String? {
|
||||||
get { return MVMCoreUIUtility.removeMdnFormat(text) }
|
get { MVMCoreUIUtility.removeMdnFormat(text) }
|
||||||
set { text = MVMCoreUIUtility.formatMdn(newValue) }
|
set { text = MVMCoreUIUtility.formatMdn(newValue) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,9 +160,9 @@ import MVMCore
|
|||||||
|
|
||||||
// Sometimes user add extra 1 in front of mdn in their address book
|
// Sometimes user add extra 1 in front of mdn in their address book
|
||||||
if isNationalMDN,
|
if isNationalMDN,
|
||||||
let unformedMDN = unformattedMDN,
|
let unformedMDN = unformattedMDN,
|
||||||
unformedMDN.count == 11,
|
unformedMDN.count == 11,
|
||||||
unformedMDN[(unformedMDN.index(unformedMDN.startIndex, offsetBy: 0))] == "1" {
|
unformedMDN[(unformedMDN.index(unformedMDN.startIndex, offsetBy: 0))] == "1" {
|
||||||
|
|
||||||
let startIndex = unformedMDN.index(unformedMDN.startIndex, offsetBy: 1)
|
let startIndex = unformedMDN.index(unformedMDN.startIndex, offsetBy: 1)
|
||||||
unformattedMDN = String(unformedMDN[startIndex...])
|
unformattedMDN = String(unformedMDN[startIndex...])
|
||||||
|
|||||||
@ -61,7 +61,7 @@ import UIKit
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override var isEnabled: Bool {
|
public override var isEnabled: Bool {
|
||||||
get { return super.isEnabled }
|
get { super.isEnabled }
|
||||||
set (enabled) {
|
set (enabled) {
|
||||||
super.isEnabled = enabled
|
super.isEnabled = enabled
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override var showError: Bool {
|
public override var showError: Bool {
|
||||||
get { return super.showError }
|
get { super.showError }
|
||||||
set (error) {
|
set (error) {
|
||||||
|
|
||||||
if error {
|
if error {
|
||||||
@ -220,9 +220,7 @@ import UIKit
|
|||||||
|
|
||||||
@discardableResult
|
@discardableResult
|
||||||
@objc override open func resignFirstResponder() -> Bool {
|
@objc override open func resignFirstResponder() -> Bool {
|
||||||
if validateWhenDoneEditing {
|
if validateWhenDoneEditing { validateText() }
|
||||||
validateText()
|
|
||||||
}
|
|
||||||
textField.resignFirstResponder()
|
textField.resignFirstResponder()
|
||||||
isSelected = false
|
isSelected = false
|
||||||
return true
|
return true
|
||||||
@ -315,6 +313,10 @@ import UIKit
|
|||||||
case .password, .secure:
|
case .password, .secure:
|
||||||
textField.isSecureTextEntry = true
|
textField.isSecureTextEntry = true
|
||||||
|
|
||||||
|
case .numberSecure:
|
||||||
|
textField.isSecureTextEntry = true
|
||||||
|
textField.keyboardType = .numberPad
|
||||||
|
|
||||||
case .number:
|
case .number:
|
||||||
textField.keyboardType = .numberPad
|
textField.keyboardType = .numberPad
|
||||||
|
|
||||||
@ -324,8 +326,7 @@ import UIKit
|
|||||||
case .phone:
|
case .phone:
|
||||||
textField.keyboardType = .phonePad
|
textField.keyboardType = .phonePad
|
||||||
|
|
||||||
default:
|
default: break
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textField.accessibilityIdentifier = model.accessibilityIdentifier
|
textField.accessibilityIdentifier = model.accessibilityIdentifier
|
||||||
@ -333,9 +334,7 @@ import UIKit
|
|||||||
observingTextFieldDelegate = delegateObject?.observingTextFieldDelegate
|
observingTextFieldDelegate = delegateObject?.observingTextFieldDelegate
|
||||||
setupTextFieldToolbar()
|
setupTextFieldToolbar()
|
||||||
|
|
||||||
if isSelected {
|
if isSelected { startEditing() }
|
||||||
startEditing()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
case password
|
case password
|
||||||
case secure
|
case secure
|
||||||
case number
|
case number
|
||||||
|
case numberSecure
|
||||||
case email
|
case email
|
||||||
case text
|
case text
|
||||||
case phone
|
case phone
|
||||||
@ -74,8 +75,8 @@
|
|||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encodeIfPresent(placeholder, forKey: .placeholder)
|
try container.encodeIfPresent(placeholder, forKey: .placeholder)
|
||||||
try container.encodeIfPresent(textAlignment, forKey: .textAlignment)
|
try container.encodeIfPresent(textAlignment, forKey: .textAlignment)
|
||||||
|
try container.encodeIfPresent(type, forKey: .type)
|
||||||
try container.encode(enabledTextColor, forKey: .enabledTextColor)
|
try container.encode(enabledTextColor, forKey: .enabledTextColor)
|
||||||
try container.encode(disabledTextColor, forKey: .disabledTextColor)
|
try container.encode(disabledTextColor, forKey: .disabledTextColor)
|
||||||
try container.encodeIfPresent(type, forKey: .type)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -253,6 +253,10 @@ class TextViewEntryField: EntryField, UITextViewDelegate, ObservingTextFieldDele
|
|||||||
case .secure, .password:
|
case .secure, .password:
|
||||||
textView.isSecureTextEntry = true
|
textView.isSecureTextEntry = true
|
||||||
|
|
||||||
|
case .numberSecure:
|
||||||
|
textView.isSecureTextEntry = true
|
||||||
|
textView.keyboardType = .numberPad
|
||||||
|
|
||||||
case .number:
|
case .number:
|
||||||
textView.keyboardType = .numberPad
|
textView.keyboardType = .numberPad
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user