react-native-a11y
Version:
Improvements of a11y for ReactNative, this library improve work with reader and keyboard focus and reader in general.
43 lines • 1.62 kB
JavaScript
import { AccessibilityInfo, findNodeHandle, InteractionManager, NativeEventEmitter } from 'react-native';
import { noop } from '../../utils';
import { KEYBOARD_STATUS_EVENT } from './A11yModule.conts';
import * as RCA11yModule from './RCA11yModule';
class A11yAndroidImpl {
announceForAccessibility(announcement) {
AccessibilityInfo.announceForAccessibility(announcement);
}
isKeyboardConnected = RCA11yModule.isKeyboardConnected;
keyboardStatusListener = callback => {
const eventEmitter = new NativeEventEmitter();
const eventListener = eventEmitter.addListener(KEYBOARD_STATUS_EVENT, callback);
return () => eventListener.remove();
};
setKeyboardFocus(ref) {
const tag = findNodeHandle(ref.current);
if (tag) {
InteractionManager.runAfterInteractions(() => {
RCA11yModule.setKeyboardFocus(tag);
});
}
}
focusFirstInteractiveElement = this.setA11yFocus;
announceScreenChange(announcement) {
RCA11yModule.announceScreenChange(announcement);
}
setPreferredKeyboardFocus = noop;
setA11yFocus(ref) {
const tag = findNodeHandle(ref.current);
if (tag) {
AccessibilityInfo.setAccessibilityFocus(tag);
}
}
setA11yElementsOrder = ({
views
}) => {
var _RCA11yModule$setA11y;
const tags = views.map(view => findNodeHandle(view)).filter(view => Boolean(view));
(_RCA11yModule$setA11y = RCA11yModule.setA11yOrder) === null || _RCA11yModule$setA11y === void 0 || _RCA11yModule$setA11y.call(RCA11yModule, tags, 0);
};
}
export const A11yModule = new A11yAndroidImpl();
//# sourceMappingURL=A11yModule.android.js.map