Merge branch 'develop' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/molecule_replacement_behavior
This commit is contained in:
commit
50caab7936
@ -75,11 +75,8 @@ extension BaseItemPickerEntryField {
|
|||||||
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
|
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
|
||||||
|
|
||||||
var accessibilityString = accessibilityString ?? ""
|
var accessibilityString = accessibilityString ?? ""
|
||||||
|
textField.accessibilityTraits = .staticText
|
||||||
if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
|
textField.accessibilityHint = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item")
|
||||||
accessibilityString += textPickerItem
|
|
||||||
}
|
|
||||||
|
|
||||||
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
|
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -379,7 +379,7 @@ import UIKit
|
|||||||
if let text = model.text, !text.isEmpty {
|
if let text = model.text, !text.isEmpty {
|
||||||
regexTextFieldOutputIfAvailable()
|
regexTextFieldOutputIfAvailable()
|
||||||
}
|
}
|
||||||
|
setAccessibilityString(model.title ?? "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,10 +399,6 @@ extension TextEntryField {
|
|||||||
|
|
||||||
var accessibilityString = accessibilityString ?? ""
|
var accessibilityString = accessibilityString ?? ""
|
||||||
|
|
||||||
if let txtRegular = MVMCoreUIUtility.hardcodedString(withKey: "textfield_regular") {
|
|
||||||
accessibilityString += txtRegular
|
|
||||||
}
|
|
||||||
|
|
||||||
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
|
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
public let checkbox = Checkbox()
|
public let checkbox = Checkbox()
|
||||||
public let label = Label(fontStyle: .RegularBodySmall)
|
public let label = Label(fontStyle: .RegularBodySmall)
|
||||||
|
private var observation: NSKeyValueObservation? = nil
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
@ -63,6 +64,12 @@
|
|||||||
bottomLabelConstraint.isActive = true
|
bottomLabelConstraint.isActive = true
|
||||||
|
|
||||||
alignCheckbox(.center)
|
alignCheckbox(.center)
|
||||||
|
isAccessibilityElement = true
|
||||||
|
accessibilityHint = checkbox.accessibilityHint
|
||||||
|
accessibilityTraits = checkbox.accessibilityTraits
|
||||||
|
observation = observe(\.checkbox.isSelected, options: [.new]) { [weak self] _, _ in
|
||||||
|
self?.updateAccessibilityLabel()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc override open func updateView(_ size: CGFloat) {
|
@objc override open func updateView(_ size: CGFloat) {
|
||||||
@ -111,6 +118,7 @@
|
|||||||
|
|
||||||
checkbox.set(with: checkBoxWithLabelModel.checkbox, delegateObject, additionalData)
|
checkbox.set(with: checkBoxWithLabelModel.checkbox, delegateObject, additionalData)
|
||||||
label.set(with: checkBoxWithLabelModel.label, delegateObject, additionalData)
|
label.set(with: checkBoxWithLabelModel.label, delegateObject, additionalData)
|
||||||
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
@ -124,4 +132,13 @@
|
|||||||
checkbox.reset()
|
checkbox.reset()
|
||||||
alignCheckbox(.center)
|
alignCheckbox(.center)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override open func accessibilityActivate() -> Bool {
|
||||||
|
checkbox.accessibilityActivate()
|
||||||
|
}
|
||||||
|
|
||||||
|
open func updateAccessibilityLabel() {
|
||||||
|
checkbox.updateAccessibilityLabel()
|
||||||
|
accessibilityLabel = [checkbox.accessibilityLabel, label.text].compactMap { $0 }.joined(separator: ",")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var stack: Stack<StackModel>
|
public var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
private var observation: NSKeyValueObservation? = nil
|
private var observation: NSKeyValueObservation? = nil
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -68,6 +68,7 @@
|
|||||||
|
|
||||||
checkbox.set(with: model.checkbox, delegateObject, additionalData)
|
checkbox.set(with: model.checkbox, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +94,7 @@
|
|||||||
message += label
|
message += label
|
||||||
}
|
}
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableCheckboxAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
if !linkShowing {
|
if !linkShowing {
|
||||||
// Make whole cell focusable if no link.
|
// Make whole cell focusable if no link.
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
public let leftImage = LoadImageView(pinnedEdges: .all)
|
public let leftImage = LoadImageView(pinnedEdges: .all)
|
||||||
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
public var stack: Stack<StackModel>
|
public var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initializers
|
// MARK: - Initializers
|
||||||
@ -53,6 +54,7 @@
|
|||||||
|
|
||||||
leftImage.set(with: model.image, delegateObject, additionalData)
|
leftImage.set(with: model.image, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +77,7 @@
|
|||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableIconAllTextLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
public let leftImage = LoadImageView(pinnedEdges: .all)
|
public let leftImage = LoadImageView(pinnedEdges: .all)
|
||||||
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink(spacing: 2.0)
|
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink(spacing: 2.0)
|
||||||
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
public lazy var rightLabelStackItem: StackItem = {
|
public lazy var rightLabelStackItem: StackItem = {
|
||||||
return StackItem(andContain: rightLabel)
|
return StackItem(andContain: rightLabel)
|
||||||
}()
|
}()
|
||||||
@ -66,6 +66,7 @@
|
|||||||
leftImage.set(with: model.image, delegateObject, additionalData)
|
leftImage.set(with: model.image, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +98,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableIconWithRightCaretAllTextLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
public let leftLabel = Label(fontStyle: .Title2XLarge)
|
public let leftLabel = Label(fontStyle: .Title2XLarge)
|
||||||
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
public var stack: Stack<StackModel>
|
public var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initializers
|
// MARK: - Initializers
|
||||||
@ -54,6 +55,7 @@
|
|||||||
|
|
||||||
leftLabel.text = String(model.number)
|
leftLabel.text = String(model.number)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +87,7 @@
|
|||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableNumberedListAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
let radioButton = RadioButton()
|
let radioButton = RadioButton()
|
||||||
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
var stack: Stack<StackModel>
|
var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
private var observation: NSKeyValueObservation? = nil
|
private var observation: NSKeyValueObservation? = nil
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
@ -62,6 +62,7 @@
|
|||||||
|
|
||||||
radioButton.set(with: model.radioButton, delegateObject, additionalData)
|
radioButton.set(with: model.radioButton, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +92,7 @@
|
|||||||
message += label
|
message += label
|
||||||
}
|
}
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableRadioButtonAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
if !linkShowing {
|
if !linkShowing {
|
||||||
// Make whole cell focusable if no link.
|
// Make whole cell focusable if no link.
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import UIKit
|
|||||||
let leftImage = LoadImageView(pinnedEdges: .all)
|
let leftImage = LoadImageView(pinnedEdges: .all)
|
||||||
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
var stack: Stack<StackModel>
|
var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
private var observation: NSKeyValueObservation? = nil
|
private var observation: NSKeyValueObservation? = nil
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
@ -79,6 +79,7 @@ import UIKit
|
|||||||
radioButton.set(with: model.radioButton, delegateObject, additionalData)
|
radioButton.set(with: model.radioButton, delegateObject, additionalData)
|
||||||
leftImage.set(with: model.image, delegateObject, additionalData)
|
leftImage.set(with: model.image, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +113,7 @@ import UIKit
|
|||||||
message += label
|
message += label
|
||||||
}
|
}
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListLeftVariableRadioButtonAndPaymentMethodModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
if !linkShowing {
|
if !linkShowing {
|
||||||
// Make whole cell focusable if no link.
|
// Make whole cell focusable if no link.
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import Foundation
|
|||||||
let subHeadline = Label(fontStyle: .BoldBodySmall)
|
let subHeadline = Label(fontStyle: .BoldBodySmall)
|
||||||
let body = Label(fontStyle: .RegularBodySmall)
|
let body = Label(fontStyle: .RegularBodySmall)
|
||||||
let link = Link()
|
let link = Link()
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// MARK: - Initializers
|
// MARK: - Initializers
|
||||||
@ -52,6 +53,7 @@ import Foundation
|
|||||||
|
|
||||||
stack.updateContainedMolecules(with: [model.eyebrow, model.headline, model.subHeadline, model.body, model.link],
|
stack.updateContainedMolecules(with: [model.eyebrow, model.headline, model.subHeadline, model.body, model.link],
|
||||||
delegateObject, additionalData)
|
delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +104,7 @@ import Foundation
|
|||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
|
|
||||||
let linkShowing = link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListOneColumnFullWidthTextAllTextAndLinksModel)?.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
if !linkShowing {
|
if !linkShowing {
|
||||||
// Make whole cell focusable if no link.
|
// Make whole cell focusable if no link.
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
private let stack: Stack<StackModel>
|
private let stack: Stack<StackModel>
|
||||||
private let arrowStackItem: StackItem
|
private let arrowStackItem: StackItem
|
||||||
private let rightLabelStackItem: StackItem
|
private let rightLabelStackItem: StackItem
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// MARK: - Initializers
|
// MARK: - Initializers
|
||||||
@ -73,6 +74,7 @@
|
|||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
||||||
arrow.set(with: model.arrow, delegateObject, additionalData)
|
arrow.set(with: model.arrow, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +100,7 @@
|
|||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListRightVariablePriceChangeAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
||||||
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
public var stack: Stack<StackModel>
|
public var stack: Stack<StackModel>
|
||||||
|
public var model: MoleculeModelProtocol?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initializers
|
// MARK: - Initializers
|
||||||
@ -65,6 +66,7 @@
|
|||||||
guard let model = model as? ListRightVariableRightCaretAllTextAndLinksModel else { return }
|
guard let model = model as? ListRightVariableRightCaretAllTextAndLinksModel else { return }
|
||||||
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
||||||
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
self.model = model
|
||||||
updateAccessibilityLabel()
|
updateAccessibilityLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +97,7 @@
|
|||||||
|
|
||||||
func updateAccessibilityLabel() {
|
func updateAccessibilityLabel() {
|
||||||
|
|
||||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
let linkShowing = (model as? ListRightVariableRightCaretAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
|
|
||||||
|
|||||||
@ -48,13 +48,6 @@ open class Stack<T>: Container where T: (StackModelProtocol & MoleculeModelProto
|
|||||||
}
|
}
|
||||||
|
|
||||||
isAccessibilityElement = false
|
isAccessibilityElement = false
|
||||||
var accessibleViews: [Any] = []
|
|
||||||
|
|
||||||
for (index, view) in stackItems.enumerated() where !stackModel.molecules[index].gone {
|
|
||||||
accessibleViews.append(view)
|
|
||||||
}
|
|
||||||
|
|
||||||
accessibilityElements = accessibleViews
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Removes all stack items views from the view.
|
/// Removes all stack items views from the view.
|
||||||
|
|||||||
@ -12,11 +12,13 @@
|
|||||||
#import "UIColor+MFConvenience.h"
|
#import "UIColor+MFConvenience.h"
|
||||||
#import "MFStyler.h"
|
#import "MFStyler.h"
|
||||||
#import "MVMCoreUICommonViewsUtility.h"
|
#import "MVMCoreUICommonViewsUtility.h"
|
||||||
|
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||||
|
|
||||||
@interface MFLoadingViewController ()
|
@interface MFLoadingViewController ()
|
||||||
|
|
||||||
@property (nullable, weak, nonatomic) MFLoadingSpinner *activityIndicator;
|
@property (nullable, weak, nonatomic) MFLoadingSpinner *activityIndicator;
|
||||||
@property (nullable, weak, nonatomic) UIView *transparentBackgroundView;
|
@property (nullable, weak, nonatomic) UIView *transparentBackgroundView;
|
||||||
|
@property (nullable, weak, nonatomic) Label *indicatorText;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@ -27,23 +29,41 @@
|
|||||||
view.backgroundColor = [UIColor clearColor];
|
view.backgroundColor = [UIColor clearColor];
|
||||||
self.view = view;
|
self.view = view;
|
||||||
|
|
||||||
|
UIStackView *loadingStack = [[UIStackView alloc] initWithFrame:CGRectZero];
|
||||||
|
loadingStack.axis = UILayoutConstraintAxisVertical;
|
||||||
|
loadingStack.alignment = UIStackViewAlignmentCenter;
|
||||||
|
loadingStack.spacing = 20;
|
||||||
|
|
||||||
// Sets up the loading view.
|
// Sets up the loading view.
|
||||||
MFLoadingSpinner *activityIndicatorView = [[MFLoadingSpinner alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];
|
MFLoadingSpinner *activityIndicatorView = [[MFLoadingSpinner alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];
|
||||||
activityIndicatorView.backgroundColor = [UIColor clearColor];
|
activityIndicatorView.backgroundColor = [UIColor clearColor];
|
||||||
activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO;
|
activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
[view addSubview:activityIndicatorView];
|
|
||||||
self.activityIndicator = activityIndicatorView;
|
self.activityIndicator = activityIndicatorView;
|
||||||
self.activityIndicator.accessibilityIdentifier = @"Loader";
|
self.activityIndicator.accessibilityIdentifier = @"Loader";
|
||||||
[activityIndicatorView pinWidthAndHeight];
|
[activityIndicatorView pinWidthAndHeight];
|
||||||
|
|
||||||
|
Label *infoLabel = [Label label];
|
||||||
|
infoLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
infoLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
infoLabel.hidden = true;
|
||||||
|
self.indicatorText = infoLabel;
|
||||||
|
|
||||||
|
[loadingStack addArrangedSubview:infoLabel];
|
||||||
|
[loadingStack addArrangedSubview:activityIndicatorView];
|
||||||
|
|
||||||
|
loadingStack.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
[view addSubview:loadingStack];
|
||||||
// Sets the constraints for the activityIndicatorView
|
// Sets the constraints for the activityIndicatorView
|
||||||
[NSLayoutConstraint constraintPinSubview:activityIndicatorView pinCenterX:YES pinCenterY:YES];
|
|
||||||
|
[NSLayoutConstraint constraintWithItem:infoLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:1.0];
|
||||||
|
[NSLayoutConstraint constraintPinSubview:loadingStack pinCenterX:YES pinCenterY:YES];
|
||||||
|
[NSLayoutConstraint constraintPinSubview:loadingStack pinTop:NO topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
|
||||||
|
|
||||||
// Sets up the transparent background view.
|
// Sets up the transparent background view.
|
||||||
UIView *transparentBackground = [MVMCoreUICommonViewsUtility commonView];
|
UIView *transparentBackground = [MVMCoreUICommonViewsUtility commonView];
|
||||||
transparentBackground.backgroundColor = [UIColor mfBackgroundGray];
|
transparentBackground.backgroundColor = [UIColor mfBackgroundGray];
|
||||||
transparentBackground.alpha = 0.9;
|
transparentBackground.alpha = 0.9;
|
||||||
[view insertSubview:transparentBackground belowSubview:activityIndicatorView];
|
[view insertSubview:transparentBackground belowSubview:loadingStack];
|
||||||
self.transparentBackgroundView = transparentBackground;
|
self.transparentBackgroundView = transparentBackground;
|
||||||
|
|
||||||
// Sets the constraints of the transparent background view to be the same as the activity indicator view.
|
// Sets the constraints of the transparent background view to be the same as the activity indicator view.
|
||||||
@ -61,8 +81,24 @@
|
|||||||
[self.activityIndicator resumeSpinner];
|
[self.activityIndicator resumeSpinner];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)startLoadingWith:(nullable NSAttributedString *) text{
|
||||||
|
if(text != nil){
|
||||||
|
self.indicatorText.attributedText = text;
|
||||||
|
self.indicatorText.accessibilityLabel = text.string;
|
||||||
|
self.indicatorText.hidden = false;
|
||||||
|
} else {
|
||||||
|
self.indicatorText.attributedText = nil;
|
||||||
|
self.indicatorText.accessibilityLabel = @"";
|
||||||
|
self.indicatorText.hidden = true;
|
||||||
|
}
|
||||||
|
[self.activityIndicator resumeSpinner];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)stopLoading {
|
- (void)stopLoading {
|
||||||
[self.activityIndicator pauseSpinner];
|
[self.activityIndicator pauseSpinner];
|
||||||
|
self.indicatorText.hidden = true;
|
||||||
|
self.indicatorText.attributedText = nil;
|
||||||
|
self.indicatorText.accessibilityLabel = @"";
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||||
|
|
||||||
CGFloat const PaddingDefault = 24;
|
CGFloat const PaddingDefault = 24;
|
||||||
CGFloat const PaddingDefaultHorizontalSpacing = 32;
|
CGFloat const PaddingDefaultHorizontalSpacing = 16;
|
||||||
CGFloat const PaddingDefaultVerticalSpacing = 32;
|
CGFloat const PaddingDefaultVerticalSpacing = 32;
|
||||||
CGFloat const PaddingDefaultVerticalSpacing3 = 24;
|
CGFloat const PaddingDefaultVerticalSpacing3 = 24;
|
||||||
CGFloat const PaddingBetweenFields = 24;
|
CGFloat const PaddingBetweenFields = 24;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user