Skip to content
This repository was archived by the owner on May 7, 2025. It is now read-only.

Commit c8f953c

Browse files
committed
Fix InputField and Textarea accessibility
1 parent 91a17ba commit c8f953c

File tree

3 files changed

+32
-14
lines changed

3 files changed

+32
-14
lines changed

Sources/Orbit/Components/InputField.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public struct InputField<Label: View, Prompt: View, Prefix: View, Suffix: View>:
5353
@Environment(\.inputFieldBeginEditingAction) private var inputFieldBeginEditingAction
5454
@Environment(\.inputFieldEndEditingAction) private var inputFieldEndEditingAction
5555
@Environment(\.isEnabled) private var isEnabled
56-
@Environment(\.locale) private var locale
5756
@Environment(\.sizeCategory) private var sizeCategory
5857
@Environment(\.textColor) private var textColor
5958

@@ -136,19 +135,19 @@ public struct InputField<Label: View, Prompt: View, Prefix: View, Suffix: View>:
136135
isFocused = false
137136
inputFieldEndEditingAction()
138137
}
139-
.overlay(
140-
resolvedPrompt,
141-
alignment: .leadingFirstTextBaseline
142-
)
143-
.accessibility {
138+
.accessibility(children: nil) {
144139
label
145140
} value: {
146141
Text(value)
147142
} hint: {
148-
Text(message?.description ?? "")
143+
prompt
149144
}
145+
.overlay(
146+
resolvedPrompt,
147+
alignment: .leadingFirstTextBaseline
148+
)
150149
}
151-
150+
152151
@ViewBuilder private var secureTextRedactedButton: some View {
153152
if showSecureTextRedactedButton {
154153
IconButton(isSecureTextRedacted ? .visibility : .visibilityOff) {
@@ -178,6 +177,7 @@ public struct InputField<Label: View, Prompt: View, Prefix: View, Suffix: View>:
178177
.lineLimit(1)
179178
.padding(.horizontal, .small)
180179
.allowsHitTesting(false)
180+
.accessibility(hidden: true)
181181
}
182182
}
183183

Sources/Orbit/Components/Textarea.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ public struct Textarea<Label: View, Prompt: View>: View, TextFieldBuildable {
8585
isFocused = false
8686
inputFieldEndEditingAction()
8787
}
88+
.accessibility(children: nil) {
89+
label
90+
} value: {
91+
Text(value)
92+
} hint: {
93+
prompt
94+
}
8895
.overlay(resolvedPrompt, alignment: .topLeading)
8996
}
9097

@@ -94,6 +101,7 @@ public struct Textarea<Label: View, Prompt: View>: View, TextFieldBuildable {
94101
.textColor(isEnabled ? state.placeholderColor : .cloudDarkActive)
95102
.padding(.small)
96103
.allowsHitTesting(false)
104+
.accessibility(hidden: true)
97105
}
98106
}
99107

Sources/Orbit/Support/Accessibility/AccessibilityLabelValueModifier.swift

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,26 @@ struct AccessibilityLabelValueModifier<Label: View, Value: View, Hint: View>: Vi
55
@Environment(\.localizationBundle) private var localizationBundle
66
@Environment(\.locale) private var locale
77

8+
let childBehavior: AccessibilityChildBehavior?
89
@ViewBuilder let label: Label
910
@ViewBuilder let value: Value
1011
@ViewBuilder let hint: Hint
1112

1213
func body(content: Content) -> some View {
1314
if isLabelTextual {
14-
content
15-
.accessibilityElement(children: .ignore)
16-
.accessibility(label: textualLabel ?? SwiftUI.Text(""))
17-
.accessibility(value: textualValue ?? SwiftUI.Text(""))
18-
.accessibility(hint: textualHint ?? SwiftUI.Text(""))
15+
if let childBehavior {
16+
content
17+
.accessibilityElement(children: childBehavior)
18+
.accessibility(label: textualLabel ?? SwiftUI.Text(""))
19+
.accessibility(value: textualValue ?? SwiftUI.Text(""))
20+
.accessibility(hint: textualHint ?? SwiftUI.Text(""))
21+
22+
} else {
23+
content
24+
.accessibility(label: textualLabel ?? SwiftUI.Text(""))
25+
.accessibility(value: textualValue ?? SwiftUI.Text(""))
26+
.accessibility(hint: textualHint ?? SwiftUI.Text(""))
27+
}
1928
} else {
2029
content
2130
.accessibilityElement(children: .contain)
@@ -42,10 +51,11 @@ struct AccessibilityLabelValueModifier<Label: View, Value: View, Hint: View>: Vi
4251
extension View {
4352

4453
func accessibility<Label: View, Value: View, Hint: View>(
54+
children: AccessibilityChildBehavior? = .ignore,
4555
@ViewBuilder label: () -> Label,
4656
@ViewBuilder value: () -> Value = { EmptyView() },
4757
@ViewBuilder hint: () -> Hint = { EmptyView() }
4858
) -> some View {
49-
modifier(AccessibilityLabelValueModifier(label: label, value: value, hint: hint))
59+
modifier(AccessibilityLabelValueModifier(childBehavior: children, label: label, value: value, hint: hint))
5060
}
5161
}

0 commit comments

Comments
 (0)