Merge branch 'develop' into feature/accessibilityHandler

This commit is contained in:
Keerthy 2023-11-02 11:37:50 +05:30
commit d5f5072560
13 changed files with 47 additions and 30 deletions

View File

@ -75,11 +75,8 @@ extension BaseItemPickerEntryField {
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
var accessibilityString = accessibilityString ?? ""
if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
accessibilityString += textPickerItem
}
textField.accessibilityTraits = .staticText
textField.accessibilityHint = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item")
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}

View File

@ -379,7 +379,7 @@ import UIKit
if let text = model.text, !text.isEmpty {
regexTextFieldOutputIfAvailable()
}
setAccessibilityString(model.title ?? "")
}
}
@ -399,10 +399,6 @@ extension TextEntryField {
var accessibilityString = accessibilityString ?? ""
if let txtRegular = MVMCoreUIUtility.hardcodedString(withKey: "textfield_regular") {
accessibilityString += txtRegular
}
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}

View File

@ -14,6 +14,7 @@
public let checkbox = Checkbox()
public let label = Label(fontStyle: .RegularBodySmall)
private var observation: NSKeyValueObservation? = nil
//--------------------------------------------------
// MARK: - Properties
@ -63,6 +64,12 @@
bottomLabelConstraint.isActive = true
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) {
@ -111,6 +118,7 @@
checkbox.set(with: checkBoxWithLabelModel.checkbox, delegateObject, additionalData)
label.set(with: checkBoxWithLabelModel.label, delegateObject, additionalData)
updateAccessibilityLabel()
}
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
@ -124,4 +132,13 @@
checkbox.reset()
alignCheckbox(.center)
}
override open func accessibilityActivate() -> Bool {
checkbox.accessibilityActivate()
}
open func updateAccessibilityLabel() {
checkbox.updateAccessibilityLabel()
accessibilityLabel = [checkbox.accessibilityLabel, label.text].compactMap { $0 }.joined(separator: ",")
}
}

View File

@ -20,7 +20,7 @@
//--------------------------------------------------
public var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
private var observation: NSKeyValueObservation? = nil
//--------------------------------------------------
@ -68,6 +68,7 @@
checkbox.set(with: model.checkbox, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -93,7 +94,7 @@
message += label
}
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableCheckboxAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -15,6 +15,7 @@
public let leftImage = LoadImageView(pinnedEdges: .all)
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
public var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
//--------------------------------------------------
// MARK: - Initializers
@ -53,6 +54,7 @@
leftImage.set(with: model.image, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -75,7 +77,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableIconAllTextLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none

View File

@ -14,7 +14,7 @@
public let leftImage = LoadImageView(pinnedEdges: .all)
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink(spacing: 2.0)
public let rightLabel = Label(fontStyle: .RegularBodySmall)
public var model: MoleculeModelProtocol?
public lazy var rightLabelStackItem: StackItem = {
return StackItem(andContain: rightLabel)
}()
@ -66,6 +66,7 @@
leftImage.set(with: model.image, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -97,7 +98,7 @@
}
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableIconWithRightCaretAllTextLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none

View File

@ -15,6 +15,7 @@
public let leftLabel = Label(fontStyle: .Title2XLarge)
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
public var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
//--------------------------------------------------
// MARK: - Initializers
@ -54,6 +55,7 @@
leftLabel.text = String(model.number)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -85,7 +87,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableNumberedListAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none

View File

@ -15,7 +15,7 @@
let radioButton = RadioButton()
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
private var observation: NSKeyValueObservation? = nil
//-----------------------------------------------------
@ -62,6 +62,7 @@
radioButton.set(with: model.radioButton, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -91,7 +92,7 @@
message += label
}
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableRadioButtonAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -18,7 +18,7 @@ import UIKit
let leftImage = LoadImageView(pinnedEdges: .all)
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
private var observation: NSKeyValueObservation? = nil
//-----------------------------------------------------
@ -79,6 +79,7 @@ import UIKit
radioButton.set(with: model.radioButton, delegateObject, additionalData)
leftImage.set(with: model.image, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -112,7 +113,7 @@ import UIKit
message += label
}
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListLeftVariableRadioButtonAndPaymentMethodModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -20,6 +20,7 @@ import Foundation
let subHeadline = Label(fontStyle: .BoldBodySmall)
let body = Label(fontStyle: .RegularBodySmall)
let link = Link()
public var model: MoleculeModelProtocol?
//-----------------------------------------------------
// MARK: - Initializers
@ -52,6 +53,7 @@ import Foundation
stack.updateContainedMolecules(with: [model.eyebrow, model.headline, model.subHeadline, model.body, model.link],
delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -102,7 +104,7 @@ import Foundation
func updateAccessibilityLabel() {
let linkShowing = link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListOneColumnFullWidthTextAllTextAndLinksModel)?.link?.title != nil
isAccessibilityElement = !linkShowing
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -18,6 +18,7 @@
private let stack: Stack<StackModel>
private let arrowStackItem: StackItem
private let rightLabelStackItem: StackItem
public var model: MoleculeModelProtocol?
//-----------------------------------------------------
// MARK: - Initializers
@ -73,6 +74,7 @@
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
arrow.set(with: model.arrow, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -98,7 +100,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListRightVariablePriceChangeAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none

View File

@ -15,6 +15,7 @@
public let rightLabel = Label(fontStyle: .RegularBodySmall)
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
public var stack: Stack<StackModel>
public var model: MoleculeModelProtocol?
//--------------------------------------------------
// MARK: - Initializers
@ -65,6 +66,7 @@
guard let model = model as? ListRightVariableRightCaretAllTextAndLinksModel else { return }
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
self.model = model
updateAccessibilityLabel()
}
@ -95,7 +97,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
let linkShowing = (model as? ListRightVariableRightCaretAllTextAndLinksModel)?.eyebrowHeadlineBodyLink.link?.title != nil
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none

View File

@ -48,13 +48,6 @@ open class Stack<T>: Container where T: (StackModelProtocol & MoleculeModelProto
}
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.