From 570facbcea41bee6599cbdacb3c2567a34a63840 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Fri, 5 Feb 2021 13:48:40 -0500 Subject: [PATCH] mild refactoring. --- .../TextFields/BaseDropdownEntryField.swift | 8 +++---- .../TextFields/DateDropdownEntryField.swift | 1 + .../FormFields/TextFields/DigitBox.swift | 4 ++-- .../TextFields/DigitEntryField.swift | 14 ++++++------- .../TextFields/DigitEntryFieldModel.swift | 2 +- .../FormFields/TextFields/EntryField.swift | 20 +++++++++--------- .../TextFields/EntryFieldModel.swift | 6 +++--- .../TextFields/ItemDropdownEntryField.swift | 2 +- .../ItemDropdownEntryFieldModel.swift | 8 +++---- .../FormFields/TextFields/MdnEntryField.swift | 10 ++++----- .../TextFields/TextEntryField.swift | 21 +++++++++---------- .../TextFields/TextEntryFieldModel.swift | 3 ++- .../TextFields/TextViewEntryField.swift | 12 +++++++---- .../TextFields/TextViewEntryFieldModel.swift | 2 +- 14 files changed, 59 insertions(+), 54 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift index b89a56e3..e1c3a8b3 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift @@ -28,7 +28,7 @@ import UIKit }() public var baseDropdownEntryFieldModel: BaseDropdownEntryFieldModel? { - return model as? BaseDropdownEntryFieldModel + model as? BaseDropdownEntryFieldModel } var additionalData: [AnyHashable: Any]? @@ -87,9 +87,9 @@ import UIKit } public override func dismissFieldInput(_ sender: Any?) { - performDropdownAction() - super.dismissFieldInput(sender) - } + performDropdownAction() + super.dismissFieldInput(sender) + } func performDropdownAction() { if let baseDropdownEntryFieldModel = baseDropdownEntryFieldModel, let actionModel = baseDropdownEntryFieldModel.action { diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift index c1ea8080..234809d3 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift @@ -69,6 +69,7 @@ import UIKit datePicker = UIDatePicker.addDatePicker(to: textField) datePicker?.addTarget(self, action: #selector(pickerValueChanged), for: .valueChanged) datePicker?.timeZone = NSTimeZone.system + textField.inputView = datePicker UIToolbar.addDismissToolbar(to: textField, delegate: self, action: #selector(dismissFieldInput)) } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitBox.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitBox.swift index 4d23558f..912b0891 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitBox.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitBox.swift @@ -80,7 +80,7 @@ import UIKit open override func setupView() { super.setupView() - + addSubview(digitField) digitField.delegate = self digitField.didDeleteDelegate = self @@ -140,7 +140,7 @@ import UIKit super.updateView(size) if !MVMCoreGetterUtility.fequal(a: Float(size), b: Float(previousSize)) { - + var width: CGFloat = 0 var height: CGFloat = 0 var pointSize: CGFloat = 13 diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryField.swift index f3cc628e..c70d458e 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryField.swift @@ -75,7 +75,7 @@ import UIKit private var selectedDigitBox: DigitBox? public var digitEntryModel: DigitEntryFieldModel? { - return model as? DigitEntryFieldModel + model as? DigitEntryFieldModel } //-------------------------------------------------- @@ -83,7 +83,7 @@ import UIKit //-------------------------------------------------- public override var isEnabled: Bool { - get { return super.isEnabled } + get { super.isEnabled } set (enabled) { digitBoxes.forEach { $0.isEnabled = enabled } super.isEnabled = enabled @@ -91,7 +91,7 @@ import UIKit } public override var showError: Bool { - get { return super.showError } + get { super.showError } set (error) { digitBoxes.forEach { $0.showError = error } super.showError = error @@ -99,7 +99,7 @@ import UIKit } public override var isLocked: Bool { - get { return super.isLocked } + get { super.isLocked } set (locked) { digitBoxes.forEach { $0.isLocked = locked } super.isLocked = locked @@ -162,7 +162,7 @@ import UIKit /// If you're using a MFViewController, you must set this to it public override weak var uiTextFieldDelegate: UITextFieldDelegate? { - get { return textField.delegate } + get { textField.delegate } set { textField.delegate = self proprietorTextDelegate = newValue @@ -450,11 +450,11 @@ extension DigitEntryField { @objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { - return proprietorTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true + proprietorTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true } @objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { - return proprietorTextDelegate?.textFieldShouldEndEditing?(textField) ?? true + proprietorTextDelegate?.textFieldShouldEndEditing?(textField) ?? true } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryFieldModel.swift index 8003c1b0..c381637a 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DigitEntryFieldModel.swift @@ -15,7 +15,7 @@ public override class var identifier: String { "digitTextField" } public var digits: Int = 4 - + //-------------------------------------------------- // MARK: - Keys //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryField.swift index ecb89f32..3996c7fc 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryField.swift @@ -36,7 +36,7 @@ import UIKit label.setContentCompressionResistancePriority(.required, for: .vertical) return label }() - + //-------------------------------------------------- // MARK: - Delegate //-------------------------------------------------- @@ -58,7 +58,7 @@ import UIKit /// Toggles enabled (original) or disabled UI. public var isEnabled: Bool { - get { return entryFieldContainer.isEnabled } + get { entryFieldContainer.isEnabled } set (enabled) { self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 @@ -69,7 +69,7 @@ import UIKit /// Toggles error or original UI. public var showError: Bool { - get { return entryFieldContainer.showError } + get { entryFieldContainer.showError } set (error) { self.feedback = error ? errorMessage : entryFieldModel?.feedback self.feedbackLabel.textColor = error ? entryFieldModel?.errorTextColor?.uiColor ?? .mvmBlack : .mvmBlack @@ -84,7 +84,7 @@ import UIKit /// Toggles original or locked UI. public var isLocked: Bool { - get { return entryFieldContainer.isLocked } + get { entryFieldContainer.isLocked } set (locked) { self.entryFieldContainer.isLocked = locked self.entryFieldModel?.locked = locked @@ -93,7 +93,7 @@ import UIKit /// Toggles selected or original (unselected) UI. public var isSelected: Bool { - get { return entryFieldContainer.isSelected } + get { entryFieldContainer.isSelected } set (selected) { self.entryFieldContainer.isSelected = selected self.entryFieldModel?.selected = selected @@ -102,7 +102,7 @@ import UIKit /// Sets the text of titleLabel public var title: String? { - get { return titleLabel.text } + get { titleLabel.text } set (newText) { titleLabel.text = newText setAccessibilityString(newText) @@ -111,13 +111,13 @@ import UIKit /// Override this to conveniently get/set the textfield(s). public var text: String? { - get { return nil } + get { nil } set { fatalError("You MUST override EntryField's 'text' variable in your subclass.") } } /// Sets feedback text in the textField. public var feedback: String? { - get { return feedbackLabel.text } + get { feedbackLabel.text } set (newFeedback) { feedbackLabel.text = newFeedback feedbackLabel.accessibilityElementsHidden = feedbackLabel.text?.isEmpty ?? true @@ -126,7 +126,7 @@ import UIKit } public var entryFieldModel: EntryFieldModel? { - return model as? EntryFieldModel + model as? EntryFieldModel } //-------------------------------------------------- @@ -223,7 +223,7 @@ import UIKit 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) { // To Be Overriden } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift index 20f88028..2a2e737c 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift @@ -46,7 +46,7 @@ import Foundation /// Temporary binding mechanism for the view to update on enable changes. public var updateUI: ActionBlock? - + // TODO: Remove once updateUI is fixed with isSelected public var updateUIDynamicError: ActionBlock? @@ -140,9 +140,9 @@ import Foundation try container.encodeIfPresent(selected, forKey: .selected) try container.encodeIfPresent(errorTextColor, forKey: .errorTextColor) 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(groupName, forKey: .groupName) + try container.encode(enabled, forKey: .enabled) + try container.encode(hideBorders, forKey: .hideBorders) } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift index 9002d701..29f4e1ec 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift @@ -29,7 +29,7 @@ open class ItemDropdownEntryField: BaseDropdownEntryField { public var observeDropdownSelection: ((String)->())? public var itemDropdownEntryFieldModel: ItemDropdownEntryFieldModel? { - return model as? ItemDropdownEntryFieldModel + model as? ItemDropdownEntryFieldModel } //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift index 10650e20..7757d466 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift @@ -15,11 +15,11 @@ public var options: [String] = [] public var selectedIndex: Int? - + public override func formFieldValue() -> AnyHashable? { guard !options.isEmpty, - let index = selectedIndex - else { return nil } + let index = selectedIndex + else { return nil } return options[index] } @@ -32,7 +32,7 @@ case options case selectedIndex } - + //-------------------------------------------------- // MARK: - Initializers //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/MdnEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/MdnEntryField.swift index c1dde689..fe2c483c 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/MdnEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/MdnEntryField.swift @@ -31,7 +31,7 @@ import MVMCore /// If you're using a MFViewController, you must set this to it public override weak var uiTextFieldDelegate: UITextFieldDelegate? { - get { return textField.delegate } + get { textField.delegate } set { textField.delegate = self proprietorTextDelegate = newValue @@ -44,7 +44,7 @@ import MVMCore /// Formats the MDN when setting and removes format of MDN when reading. public var mdn: String? { - get { return MVMCoreUIUtility.removeMdnFormat(text) } + get { MVMCoreUIUtility.removeMdnFormat(text) } set { text = MVMCoreUIUtility.formatMdn(newValue) } } @@ -160,9 +160,9 @@ import MVMCore // Sometimes user add extra 1 in front of mdn in their address book if isNationalMDN, - let unformedMDN = unformattedMDN, - unformedMDN.count == 11, - unformedMDN[(unformedMDN.index(unformedMDN.startIndex, offsetBy: 0))] == "1" { + let unformedMDN = unformattedMDN, + unformedMDN.count == 11, + unformedMDN[(unformedMDN.index(unformedMDN.startIndex, offsetBy: 0))] == "1" { let startIndex = unformedMDN.index(unformedMDN.startIndex, offsetBy: 1) unformattedMDN = String(unformedMDN[startIndex...]) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift index 84a19fb5..1eecfbb8 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift @@ -61,7 +61,7 @@ import UIKit //-------------------------------------------------- public override var isEnabled: Bool { - get { return super.isEnabled } + get { super.isEnabled } set (enabled) { super.isEnabled = enabled @@ -75,7 +75,7 @@ import UIKit } public override var showError: Bool { - get { return super.showError } + get { super.showError } set (error) { if error { @@ -220,9 +220,7 @@ import UIKit @discardableResult @objc override open func resignFirstResponder() -> Bool { - if validateWhenDoneEditing { - validateText() - } + if validateWhenDoneEditing { validateText() } textField.resignFirstResponder() isSelected = false return true @@ -255,7 +253,7 @@ import UIKit showError = false return } - + if let isValid = textEntryFieldModel?.isValid { self.isValid = isValid } @@ -315,6 +313,10 @@ import UIKit case .password, .secure: textField.isSecureTextEntry = true + case .numberSecure: + textField.isSecureTextEntry = true + textField.keyboardType = .numberPad + case .number: textField.keyboardType = .numberPad @@ -324,8 +326,7 @@ import UIKit case .phone: textField.keyboardType = .phonePad - default: - break + default: break } textField.accessibilityIdentifier = model.accessibilityIdentifier @@ -333,9 +334,7 @@ import UIKit observingTextFieldDelegate = delegateObject?.observingTextFieldDelegate setupTextFieldToolbar() - if isSelected { - startEditing() - } + if isSelected { startEditing() } } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index 5bdc26cc..817a10c5 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -16,6 +16,7 @@ case password case secure case number + case numberSecure case email case text case phone @@ -74,8 +75,8 @@ var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(placeholder, forKey: .placeholder) try container.encodeIfPresent(textAlignment, forKey: .textAlignment) + try container.encodeIfPresent(type, forKey: .type) try container.encode(enabledTextColor, forKey: .enabledTextColor) try container.encode(disabledTextColor, forKey: .disabledTextColor) - try container.encodeIfPresent(type, forKey: .type) } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift index b964ee8c..543469c1 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift @@ -149,17 +149,17 @@ class TextViewEntryField: EntryField, UITextViewDelegate, ObservingTextFieldDele @objc open override func setupFieldContainerContent(_ container: UIView) { container.addSubview(textView) - + topConstraint = textView.topAnchor.constraint(equalTo: container.topAnchor, constant: Padding.Three) leadingConstraint = textView.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: Padding.Three) trailingConstraint = container.trailingAnchor.constraint(equalTo: textView.trailingAnchor, constant: Padding.Three) bottomConstraint = container.bottomAnchor.constraint(equalTo: textView.bottomAnchor, constant: Padding.Three) - + topConstraint?.isActive = true leadingConstraint?.isActive = true trailingConstraint?.isActive = true bottomConstraint?.isActive = true - + heightConstraint = textView.heightAnchor.constraint(equalToConstant: 0) accessibilityElements = [titleLabel, textView, feedbackLabel] } @@ -203,7 +203,7 @@ class TextViewEntryField: EntryField, UITextViewDelegate, ObservingTextFieldDele /// Executes on UITextView.textDidEndEditingNotification @objc override func endInputing() { super.endInputing() - + // Don't show error till user starts typing. guard text?.count ?? 0 != 0 else { showError = false @@ -253,6 +253,10 @@ class TextViewEntryField: EntryField, UITextViewDelegate, ObservingTextFieldDele case .secure, .password: textView.isSecureTextEntry = true + case .numberSecure: + textView.isSecureTextEntry = true + textView.keyboardType = .numberPad + case .number: textView.keyboardType = .numberPad diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryFieldModel.swift index 00a07a1c..42da3ca2 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryFieldModel.swift @@ -23,7 +23,7 @@ class TextViewEntryFieldModel: TextEntryFieldModel { public var placeholderFontStyle: Styler.Font = Styler.Font.RegularMicro public var editable: Bool = true public var showsPlaceholder: Bool = false - + //-------------------------------------------------- // MARK: - Keys //--------------------------------------------------