mild refactoring.

This commit is contained in:
Kevin G Christiano 2021-02-05 13:48:40 -05:00
parent def376c67a
commit 570facbcea
14 changed files with 59 additions and 54 deletions

View File

@ -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 {

View File

@ -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))
} }

View File

@ -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
} }
} }

View File

@ -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
} }

View File

@ -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)
} }
} }

View File

@ -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
} }
//-------------------------------------------------- //--------------------------------------------------

View File

@ -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]
} }

View File

@ -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...])

View File

@ -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()
}
} }
} }

View File

@ -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)
} }
} }

View File

@ -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