React Native accessibility (#539)

* React Native accessibility

* First round of changes

* Latest update

* Checkpoint

* Wrap up

* Lint

* Remove unhelpful image hints

* Fix navigation

* Fix rebase and lint

* Mitigate an known issue with the password entry in login

* Fix composer dismiss

* Remove focus on input elements for web

* Remove i and npm

* pls work

* Remove stray declaration

* Regenerate yarn.lock

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
Ollie H 2023-05-01 18:38:47 -07:00 committed by GitHub
parent c75c888de2
commit 83959c595d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
86 changed files with 2479 additions and 1827 deletions

View file

@ -20,7 +20,11 @@ const ImageDefaultHeader = ({onRequestClose}: Props) => (
<TouchableOpacity
style={styles.closeButton}
onPress={onRequestClose}
hitSlop={HIT_SLOP}>
hitSlop={HIT_SLOP}
accessibilityRole="button"
accessibilityLabel="Close image"
accessibilityHint="Closes viewer for header image"
onAccessibilityEscape={onRequestClose}>
<Text style={styles.closeText}></Text>
</TouchableOpacity>
</SafeAreaView>

View file

@ -127,7 +127,8 @@ const ImageItem = ({
<TouchableWithoutFeedback
onPress={doubleTapToZoomEnabled ? handleDoubleTap : undefined}
onLongPress={onLongPressHandler}
delayLongPress={delayLongPress}>
delayLongPress={delayLongPress}
accessibilityRole="image">
<Animated.Image
source={imageSrc}
style={imageStylesWithOpacity}

View file

@ -112,7 +112,12 @@ function ImageViewing({
}
return (
<SafeAreaView style={styles.screen} onLayout={onLayout} edges={edges}>
<SafeAreaView
style={styles.screen}
onLayout={onLayout}
edges={edges}
aria-modal
accessibilityViewIsModal>
<ModalsContainer />
<View style={[styles.container, {opacity, backgroundColor}]}>
<Animated.View style={[styles.header, {transform: headerTransform}]}>

View file

@ -89,13 +89,25 @@ function LightboxInner({
return (
<View style={styles.mask}>
<TouchableWithoutFeedback onPress={onClose}>
<TouchableWithoutFeedback
onPress={onClose}
accessibilityRole="button"
accessibilityLabel="Close image viewer"
accessibilityHint="Exits image view"
onAccessibilityEscape={onClose}>
<View style={styles.imageCenterer}>
<Image source={imgs[index]} style={styles.image} />
<Image
accessibilityIgnoresInvertColors
source={imgs[index]}
style={styles.image}
/>
{canGoLeft && (
<TouchableOpacity
onPress={onPressLeft}
style={[styles.btn, styles.leftBtn]}>
style={[styles.btn, styles.leftBtn]}
accessibilityRole="button"
accessibilityLabel="Go back"
accessibilityHint="Navigates to previous image in viewer">
<FontAwesomeIcon
icon="angle-left"
style={styles.icon}
@ -106,7 +118,10 @@ function LightboxInner({
{canGoRight && (
<TouchableOpacity
onPress={onPressRight}
style={[styles.btn, styles.rightBtn]}>
style={[styles.btn, styles.rightBtn]}
accessibilityRole="button"
accessibilityLabel="Go to next"
accessibilityHint="Navigates to next image in viewer">
<FontAwesomeIcon
icon="angle-right"
style={styles.icon}