From 84dde677d90bb3cfdf53329f7d257b870cb38eca Mon Sep 17 00:00:00 2001 From: Su Min Kim Date: Tue, 8 Dec 2020 10:15:28 -0800 Subject: [PATCH] Add accessibility examples (#30379) Summary: Added examples to RNTester for the AccessibilityInfo API for: 1. SetAccessibilityFocus() 2. isReduceMotionEnabled() 3. iOS Only a. isBoldTextEnabled() b. isGrayScaleEnabled() c. isInvertColorsEnabled() d. isReduceTransparencyEnabled() ## Changelog [General] [Added] - Add new examples to the Accessibility API page Pull Request resolved: https://github.com/facebook/react-native/pull/30379 Test Plan: ![iOS GIF](http://g.recordit.co/pmzvQXYjdD.gif) Reviewed By: TheSavior Differential Revision: D25245329 Pulled By: rickhanlonii fbshipit-source-id: e9c11c775410075199b4e1011b3dac0acd972e89 --- .../rn-tester/js/components/ExamplePage.js | 1 + .../Accessibility/AccessibilityExample.js | 205 ++++++++++++++---- 2 files changed, 158 insertions(+), 48 deletions(-) diff --git a/packages/rn-tester/js/components/ExamplePage.js b/packages/rn-tester/js/components/ExamplePage.js index 879f37971b5..23dc5158799 100644 --- a/packages/rn-tester/js/components/ExamplePage.js +++ b/packages/rn-tester/js/components/ExamplePage.js @@ -76,6 +76,7 @@ const styles = StyleSheet.create({ }, examplesContainer: { flexGrow: 1, + flex: 1, }, description: { marginVertical: 8, diff --git a/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js b/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js index f9e8e6c12e5..b5e0d4a1c2e 100644 --- a/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js +++ b/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js @@ -18,8 +18,10 @@ const { View, TouchableOpacity, TouchableWithoutFeedback, + findNodeHandle, Alert, StyleSheet, + Platform, } = require('react-native'); const RNTesterBlock = require('../../components/RNTesterBlock'); @@ -27,6 +29,7 @@ const RNTesterBlock = require('../../components/RNTesterBlock'); const checkImageSource = require('./check.png'); const uncheckImageSource = require('./uncheck.png'); const mixedCheckboxImageSource = require('./mixed.png'); +const {createRef} = require('react'); const styles = StyleSheet.create({ image: { @@ -692,48 +695,6 @@ class FakeSliderExample extends React.Component { } } -class ScreenReaderStatusExample extends React.Component<{}> { - state = { - screenReaderEnabled: false, - }; - - componentDidMount() { - AccessibilityInfo.addEventListener( - 'change', - this._handleScreenReaderToggled, - ); - AccessibilityInfo.fetch().done(isEnabled => { - this.setState({ - screenReaderEnabled: isEnabled, - }); - }); - } - - componentWillUnmount() { - AccessibilityInfo.removeEventListener( - 'change', - this._handleScreenReaderToggled, - ); - } - - _handleScreenReaderToggled = isEnabled => { - this.setState({ - screenReaderEnabled: isEnabled, - }); - }; - - render() { - return ( - - - The screen reader is{' '} - {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}. - - - ); - } -} - class AnnounceForAccessibility extends React.Component<{}> { _handleOnPress = () => AccessibilityInfo.announceForAccessibility('Announcement Test'); @@ -750,6 +711,148 @@ class AnnounceForAccessibility extends React.Component<{}> { } } +class SetAccessibilityFocusExample extends React.Component<{}> { + state = { + reactTag: null, + }; + + render() { + const myRef = createRef(); + + const onClose = () => { + if (myRef && myRef.current) { + const reactTag = findNodeHandle(myRef.current); + this.setState({reactTag}); + AccessibilityInfo.setAccessibilityFocus(reactTag); + } + }; + + return ( + + + SetAccessibilityFocus on ReactTag:{' '} + {this.state.reactTag == null ? 'Null' : this.state.reactTag} + +