UNPKG

react-native-a11y

Version:

Improvements of a11y for ReactNative, this library improve work with reader and keyboard focus and reader in general.

63 lines (50 loc) 1.76 kB
import { NativeModules, Platform } from "react-native"; const LINKING_ERROR = `The package 'react-native-a11y' doesn't seem to be linked. Make sure: \n\n${Platform.select( { ios: "- You have run 'pod install'\n", default: "" }, )}- You rebuilt the app after installing the package\n` + `- You are not using Expo Go\n`; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error const isTurboModuleEnabled = global.__turboModuleProxy != null; const RCA11yModule = isTurboModuleEnabled ? // eslint-disable-next-line @typescript-eslint/no-var-requires require("../../../nativeSpecs/NativeA11yModule").default : NativeModules.RCA11yModule; export const RCA11y = RCA11yModule || new Proxy( {}, { get() { throw new Error(LINKING_ERROR); }, }, ); export function isA11yReaderEnabled(): Promise<boolean> { return RCA11y.isA11yReaderEnabled(); } export function isKeyboardConnected(): Promise<boolean> { return RCA11y.isKeyboardConnected(); } export function announceForAccessibility(announcement: string): void { RCA11y.announceForAccessibility(announcement); } export function announceScreenChange(announcement: string): void { RCA11y.announceScreenChange(announcement); } export function setAccessibilityFocus(nativeTag: number): void { RCA11y.setAccessibilityFocus(nativeTag); } export function setKeyboardFocus(nativeTag: number, _nextTag = 0): void { RCA11y.setKeyboardFocus(nativeTag, _nextTag); } export function setPreferredKeyboardFocus( nativeTag: number, nextTag: number, ): void { RCA11y.setAccessibilityFocus(nativeTag, nextTag); } export function setA11yOrder(tags: number[], nativeTag: number): void { RCA11y.setA11yOrder(tags, nativeTag); }