This commit is contained in:
Kevin G Christiano 2021-02-16 17:27:35 -05:00
parent 759e803b3e
commit 6b3bcbea6a
2 changed files with 71 additions and 17 deletions

View File

@ -39,6 +39,18 @@ import Foundation
return delimiters[index] return delimiters[index]
} }
/*
public func delimiter(for index: Int) -> String {
guard index != components.count - 1 else { return "" }
guard let delimiters = delimiters,
index < delimiters.count
else { return " " }
return delimiters[index]
}
*/
/// A string of the picker row concatenated by whitespace or delimiters if provided. /// A string of the picker row concatenated by whitespace or delimiters if provided.
public var selectedRowText: String { public var selectedRowText: String {

View File

@ -52,6 +52,8 @@ import UIKit
/// Validate on each entry in the textField. Default: true /// Validate on each entry in the textField. Default: true
public var validateEachCharacter: Bool = true public var validateEachCharacter: Bool = true
// private var observation: NSKeyValueObservation? = nil
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Computed Properties // MARK: - Computed Properties
//-------------------------------------------------- //--------------------------------------------------
@ -60,10 +62,10 @@ import UIKit
public var isEnabled: Bool { public var isEnabled: Bool {
get { entryFieldContainer.isEnabled } get { entryFieldContainer.isEnabled }
set (enabled) { set (enabled) {
self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
self.entryFieldContainer.isEnabled = enabled entryFieldContainer.isEnabled = enabled
self.entryFieldModel?.enabled = enabled entryFieldModel?.enabled = enabled
} }
} }
@ -71,10 +73,10 @@ import UIKit
public var showError: Bool { public var showError: Bool {
get { entryFieldContainer.showError } get { entryFieldContainer.showError }
set (error) { set (error) {
self.feedback = error ? errorMessage : entryFieldModel?.feedback feedback = error ? errorMessage : entryFieldModel?.feedback
self.feedbackLabel.textColor = error ? entryFieldModel?.errorTextColor?.uiColor ?? .mvmBlack : .mvmBlack feedbackLabel.textColor = error ? entryFieldModel?.errorTextColor?.uiColor ?? .mvmBlack : .mvmBlack
self.entryFieldContainer.showError = error entryFieldContainer.showError = error
self.entryFieldModel?.showError = error entryFieldModel?.showError = error
} }
} }
@ -86,8 +88,8 @@ import UIKit
public var isLocked: Bool { public var isLocked: Bool {
get { entryFieldContainer.isLocked } get { entryFieldContainer.isLocked }
set (locked) { set (locked) {
self.entryFieldContainer.isLocked = locked entryFieldContainer.isLocked = locked
self.entryFieldModel?.locked = locked entryFieldModel?.locked = locked
} }
} }
@ -95,17 +97,17 @@ import UIKit
public var isSelected: Bool { public var isSelected: Bool {
get { entryFieldContainer.isSelected } get { entryFieldContainer.isSelected }
set (selected) { set (selected) {
self.entryFieldContainer.isSelected = selected entryFieldContainer.isSelected = selected
self.entryFieldModel?.selected = selected entryFieldModel?.selected = selected
} }
} }
/// Sets the text of titleLabel /// Sets the text of titleLabel
public var title: String? { public var title: String? {
get { titleLabel.text } get { titleLabel.text }
set (newText) { set {
titleLabel.text = newText titleLabel.text = newValue
setAccessibilityString(newText) setAccessibilityString(newValue)
} }
} }
@ -118,8 +120,8 @@ import UIKit
/// Sets feedback text in the textField. /// Sets feedback text in the textField.
public var feedback: String? { public var feedback: String? {
get { feedbackLabel.text } get { feedbackLabel.text }
set (newFeedback) { set {
feedbackLabel.text = newFeedback feedbackLabel.text = newValue
feedbackLabel.accessibilityElementsHidden = feedbackLabel.text?.isEmpty ?? true feedbackLabel.accessibilityElementsHidden = feedbackLabel.text?.isEmpty ?? true
entryFieldContainer.refreshUI(updateMoleculeLayout: true) entryFieldContainer.refreshUI(updateMoleculeLayout: true)
} }
@ -217,6 +219,46 @@ import UIKit
layoutMarginsGuide.bottomAnchor.constraint(equalTo: feedbackLabel.bottomAnchor).isActive = true layoutMarginsGuide.bottomAnchor.constraint(equalTo: feedbackLabel.bottomAnchor).isActive = true
} }
/*
isAccessibilityElement = false
setContentCompressionResistancePriority(.required, for: .vertical)
accessibilityElements = [titleLabel, feedbackLabel]
backgroundColor = .mvmWhite
// observation = observe(\.feedbackLabel.text, options: [.new]) { [weak self] _, _ in
// self?.entryFieldContainer.refreshUI(updateMoleculeLayout: true)
// }
addSubview(titleLabel)
addSubview(entryFieldContainer)
addSubview(feedbackLabel)
titleLabelLeading = titleLabel.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor)
titleLabelTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: titleLabel.trailingAnchor)
titleContainerDistance = entryFieldContainer.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: Padding.One)
entryFieldContainerLeading = entryFieldContainer.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor)
feedbackContainerDistance = feedbackLabel.topAnchor.constraint(equalTo: entryFieldContainer.bottomAnchor, constant: Padding.Two)
entryFieldContainerTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: entryFieldContainer.trailingAnchor)
feedbackLabelLeading = feedbackLabel.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor)
feedbackLabelTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: feedbackLabel.trailingAnchor)
NSLayoutConstraint.activate([
titleLabel.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor),
titleLabelLeading!,
titleLabelLeading!,
titleContainerDistance!,
entryFieldContainerLeading!,
entryFieldContainerTrailing!,
feedbackContainerDistance!,
feedbackLabelLeading!,
feedbackLabelTrailing!,
layoutMarginsGuide.bottomAnchor.constraint(equalTo: feedbackLabel.bottomAnchor)
])
entryFieldContainer.setContentCompressionResistancePriority(.required, for: .vertical)
setupFieldContainerContent(entryFieldContainer)
*/
@objc open override func layoutSubviews() { @objc open override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()