added accessibilitytraits, value, label dynamically from modelJSON

This commit is contained in:
Krishna Kishore Bandaru 2023-09-15 01:07:20 +05:30
parent 022319c186
commit d7c472b667
24 changed files with 62 additions and 21 deletions

View File

@ -75,6 +75,7 @@ import Foundation
delegateObject, additionalData)
rightImageView.set(with: model.image, delegateObject, additionalData)
updateAccessibilityLabel()
accessibilityTraits.update(with: model.accessibilityTraits ?? button.accessibilityTraits)
}
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {

View File

@ -73,6 +73,7 @@
delegateObject, additionalData)
rightImageView.set(with: model.image, delegateObject, additionalData)
updateAccessibilityLabel()
accessibilityTraits.update(with: model.accessibilityTraits ?? button.accessibilityTraits)
}
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {

View File

@ -77,7 +77,7 @@
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -91,6 +91,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -99,7 +99,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -109,6 +109,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -87,7 +87,7 @@
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -89,7 +89,7 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -131,6 +131,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -147,7 +147,7 @@
override public var accessibilityTraits: UIAccessibilityTraits {
get {
if (accessoryView != nil) {
return .button
return listItemModel?.accessibilityTraits ?? .button
} else if (!(horizontalStack.stackModel?.molecules[1].gone ?? true)) {
return heart.accessibilityTraits
} else {

View File

@ -95,7 +95,7 @@ import Foundation
// Ensures voice over does not read "selected" after user triggers action on cell.
override public var accessibilityTraits: UIAccessibilityTraits {
get {
return (accessoryView != nil) ? .button : .none
return (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
set {}
}

View File

@ -46,7 +46,7 @@ import Foundation
/// Ensures voice over does not read "selected" after user triggers action on cell.
override public var accessibilityTraits: UIAccessibilityTraits {
get {
return (accessoryView != nil) ? .button : .none
return (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
set {}
}

View File

@ -91,6 +91,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -47,7 +47,7 @@
stack.restack()
accessibilityValue = button.accessibilityValue
accessibilityHint = button.accessibilityHint
accessibilityTraits = .button
accessibilityTraits = (listItemModel?.accessibilityTraits ?? .button)
}
//-----------------------------------------------------

View File

@ -83,6 +83,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -100,7 +100,7 @@
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
if !linkShowing {
// Make whole cell focusable if no link.

View File

@ -98,6 +98,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -97,8 +97,8 @@
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
isAccessibilityElement = !linkShowing
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
if !linkShowing {
// Make whole cell focusable if no link.
accessibilityLabel = getAccessibilityMessage()

View File

@ -89,7 +89,7 @@
func updateAccessibilityLabel() {
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
accessibilityTraits = .button
accessibilityTraits = listItemModel?.accessibilityTraits ?? .button
if !linkShowing && accessoryView == nil {
// Make whole cell focusable if one action

View File

@ -95,6 +95,6 @@
}
accessibilityLabel = message
accessibilityTraits = (accessoryView != nil) ? .button : .none
accessibilityTraits = (accessoryView != nil) ? (listItemModel?.accessibilityTraits ?? .button) : .none
}
}

View File

@ -18,7 +18,10 @@
public var hideArrow: Bool?
public var line: LineModel?
public var style: ListItemStyle?
public var accessibilityTraits: UIAccessibilityTraits?
public var accessibilityText: String?
public var accessibilityValue: String?
//--------------------------------------------------
// MARK: - Keys
//--------------------------------------------------
@ -29,6 +32,9 @@
case hideArrow
case line
case style
case accessibilityTraits
case accessibilityText
case accessibilityValue
}
//--------------------------------------------------
@ -102,6 +108,9 @@
hideArrow = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideArrow)
line = try typeContainer.decodeIfPresent(LineModel.self, forKey: .line)
style = try typeContainer.decodeIfPresent(ListItemStyle.self, forKey: .style)
accessibilityTraits = try typeContainer.decodeIfPresent(UIAccessibilityTraits.self, forKey: .accessibilityTraits)
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
accessibilityValue = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityValue)
try super.init(from: decoder)
}
@ -113,5 +122,8 @@
try container.encodeIfPresent(hideArrow, forKey: .hideArrow)
try container.encodeIfPresent(line, forKey: .line)
try container.encodeIfPresent(style, forKey: .style)
try container.encodeIfPresent(accessibilityTraits, forKey: .accessibilityTraits)
try container.encodeIfPresent(accessibilityText, forKey: .accessibilityText)
try container.encodeIfPresent(accessibilityValue, forKey: .accessibilityValue)
}
}

View File

@ -12,6 +12,9 @@ import Foundation
public protocol AccessibilityModelProtocol {
var accessibilityIdentifier: String? { get set }
var accessibilityTraits: UIAccessibilityTraits? { get set }
var accessibilityText: String? { get set }
var accessibilityValue: String? { get set }
}
public extension AccessibilityModelProtocol {
@ -20,4 +23,19 @@ public extension AccessibilityModelProtocol {
get { nil }
set { }
}
var accessibilityTraits: UIAccessibilityTraits? {
get { nil }
set { }
}
var accessibilityText: String? {
get { nil }
set { }
}
var accessibilityValue: String? {
get { nil }
set { }
}
}

View File

@ -15,7 +15,7 @@ public enum ListItemStyle: String, Codable {
case none
}
public protocol ListItemModelProtocol: ContainerModelProtocol {
public protocol ListItemModelProtocol: ContainerModelProtocol, AccessibilityModelProtocol {
var line: LineModel? { get set }
var action: ActionModelProtocol? { get set }
var hideArrow: Bool? { get set }

View File

@ -163,6 +163,15 @@ import UIKit
// align if needed.
containerHelper.set(with: model, for: molecule as? MVMCoreUIViewConstrainingProtocol)
if let traits = model.accessibilityTraits {
accessibilityTraits.update(with: traits)
}
if let accessibilityText = model.accessibilityText {
accessibilityLabel = accessibilityText
isAccessibilityElement = true
}
accessibilityValue = model.accessibilityValue
}
open func reset() {