Skip to content

Commit

Permalink
fix(AccessibilityIdentifiers): IOS-9694 - New struct for common Ids (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanegon authored Feb 2, 2024
1 parent 28967aa commit 838aa6b
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,6 @@ public class NavigationPresetView: UIStackView {
}
}

public var setAccessibilityIdentifier: String? {
get {
accessibilityIdentifier
}
set {
accessibilityIdentifier = newValue
}
}

override public var tintColor: UIColor! {
get {
super.tintColor
Expand Down Expand Up @@ -76,8 +67,13 @@ private extension NavigationPresetView {
spacing = 16

imageView.tintColor = .textSecondary
isAccessibilityElement = true
configureAccessibility()

addArrangedSubview(imageView)
}

func configureAccessibility() {
isAccessibilityElement = true
accessibilityIdentifier = ListAccessibilityIdentifiers.chevron.rawValue
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
//
// DefaultAccessibilityIdentifiers.swift
//
// Made with ❤️ by Novum
//
// Copyright © Telefonica. All rights reserved.
//

import Foundation

public struct DefaultAccessibilityIdentifier {
public struct Feature {
let description: String
public init(_ description: String) {
self.description = description
}
}

public struct Section {
let description: String
public init(_ description: String) {
self.description = description
}
}

public struct ElementType {
let description: String
public init(_ description: String) {
self.description = description
}
}

let feature: String
let section: String
let elementType: String

public init(
feature: DefaultAccessibilityIdentifier.Feature,
section: DefaultAccessibilityIdentifier.Section,
elementType: DefaultAccessibilityIdentifier.ElementType
) {
self.feature = feature.description
self.section = section.description
self.elementType = elementType.description
}

public var rawValue: String {
[feature, section, elementType]
.compactMap { $0 }
.joined(separator: "_")
}
}

public extension DefaultAccessibilityIdentifier.Section {
static let item = DefaultAccessibilityIdentifier.Section("item")
}

public extension DefaultAccessibilityIdentifier.ElementType {
static let chevron = DefaultAccessibilityIdentifier.ElementType("chevron")
static let icon = DefaultAccessibilityIdentifier.ElementType("icon")
static let title = DefaultAccessibilityIdentifier.ElementType("title")
static let subtitle = DefaultAccessibilityIdentifier.ElementType("subtitle")
static let errorLabel = DefaultAccessibilityIdentifier.ElementType("error_reference")
static let primaryButton = DefaultAccessibilityIdentifier.ElementType("primary_button")
static let secondaryButton = DefaultAccessibilityIdentifier.ElementType("secondary_button")
static let linkButton = DefaultAccessibilityIdentifier.ElementType("link_button")
static let slot = DefaultAccessibilityIdentifier.ElementType("slot")
static let description = DefaultAccessibilityIdentifier.ElementType("description")
static let tag = DefaultAccessibilityIdentifier.ElementType("tag")
static let action = DefaultAccessibilityIdentifier.ElementType("action")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// FeedbackAccessibilityIdentifiers.swift
//
// Made with ❤️ by Novum
//
// Copyright © Telefonica. All rights reserved.
//

private extension DefaultAccessibilityIdentifier.Feature {
static let feedback = DefaultAccessibilityIdentifier.Feature("feedback")
}

public enum FeedbackAccessibilityIdentifiers {
public static var icon = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .icon)
public static var title = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .title)
public static var description = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .description)
public static var primaryButton = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .primaryButton)
public static var secondaryButton = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .secondaryButton)
public static var linkButton = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .linkButton)
public static var slot = DefaultAccessibilityIdentifier(feature: .feedback, section: .item, elementType: .slot)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// ListAccessibilityIdentifiers.swift
//
// Made with ❤️ by Novum
//
// Copyright © Telefonica. All rights reserved.
//

import Foundation

private extension DefaultAccessibilityIdentifier.Feature {
static let list = DefaultAccessibilityIdentifier.Feature("list")
}

public enum ListAccessibilityIdentifiers {
public static var icon = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .icon)
public static var tag = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .tag)
public static var title = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .title)
public static var subtitle = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .subtitle)
public static var description = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .description)
public static var slot = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .slot)
public static var action = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .action)
public static var chevron = DefaultAccessibilityIdentifier(feature: .list, section: .item, elementType: .chevron)
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public struct CellNavigationPreset: View {
.renderingMode(.template)
.foregroundColor(.neutralMedium)
.frame(width: Constants.smallImageSize, height: Constants.smallImageSize, alignment: .center)
.accessibilityIdentifier(ListAccessibilityIdentifiers.chevron.rawValue)
}
}
}

0 comments on commit 838aa6b

Please sign in to comment.