fix accessibility label in notifications (#4305)

* fix accessibility label in notifications

* add accessibility options to expand post

* inherit from outside, but always include `activate`

* include option to disable label/hint on previewable avatar

* fix hidden elements still being read on voiceover

* make it work for followers too

* extract variable

* fix hint

* update wording elsewhere
This commit is contained in:
Hailey 2024-05-31 13:02:18 -07:00 committed by GitHub
parent b51640fbc0
commit 708a80e7a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 93 additions and 49 deletions

View file

@ -64,6 +64,8 @@ export const Link = memo(function Link({
anchorNoUnderline,
navigationAction,
onBeforePress,
accessibilityActions,
onAccessibilityAction,
...props
}: Props) {
const t = useTheme()
@ -89,6 +91,11 @@ export const Link = memo(function Link({
[closeModal, navigation, navigationAction, href, openLink, onBeforePress],
)
const accessibilityActionsWithActivate = [
...(accessibilityActions || []),
{name: 'activate', label: title},
]
if (noFeedback) {
return (
<WebAuxClickWrapper>
@ -97,6 +104,14 @@ export const Link = memo(function Link({
onPress={onPress}
accessible={accessible}
accessibilityRole="link"
accessibilityActions={accessibilityActionsWithActivate}
onAccessibilityAction={e => {
if (e.nativeEvent.actionName === 'activate') {
onPress()
} else {
onAccessibilityAction?.(e)
}
}}
{...props}
android_ripple={{
color: t.atoms.bg_contrast_25.backgroundColor,

View file

@ -53,6 +53,7 @@ interface PreviewableUserAvatarProps extends BaseUserAvatarProps {
profile: AppBskyActorDefs.ProfileViewBasic
disableHoverCard?: boolean
onBeforePress?: () => void
accessible?: boolean
}
const BLUR_AMOUNT = isWeb ? 5 : 100
@ -386,6 +387,7 @@ let PreviewableUserAvatar = ({
profile,
disableHoverCard,
onBeforePress,
accessible = true,
...rest
}: PreviewableUserAvatarProps): React.ReactNode => {
const {_} = useLingui()
@ -399,7 +401,12 @@ let PreviewableUserAvatar = ({
return (
<ProfileHoverCard did={profile.did} disable={disableHoverCard}>
<Link
label={_(msg`See profile`)}
label={
accessible
? _(msg`${profile.displayName || profile.handle}'s avatar`)
: undefined
}
accessibilityHint={accessible ? _(msg`Opens this profile`) : undefined}
to={makeProfileLink({
did: profile.did,
handle: profile.handle,