From cb1bfe0e6f482b6e6b4db3915ddab81a464843bf Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Sun, 14 Jan 2024 10:43:26 -0600 Subject: [PATCH] Improve a11y --- src/components/forms/Toggle.tsx | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/forms/Toggle.tsx b/src/components/forms/Toggle.tsx index e3cfa1a4cc..2bcf40836f 100644 --- a/src/components/forms/Toggle.tsx +++ b/src/components/forms/Toggle.tsx @@ -5,8 +5,10 @@ import {useTheme, atoms as a, web} from '#/alf' import {Text} from '#/components/Typography' import {useInteractionState} from '#/components/hooks/useInteractionState' import {StyleProp} from 'react-native' +import {AccessibilityRole} from 'react-native' type ItemState = { + id: string name: string value: boolean disabled: boolean @@ -16,6 +18,7 @@ type ItemState = { } const ItemContext = React.createContext({ + id: '', name: '', value: false, disabled: false, @@ -49,7 +52,9 @@ function Item({ disabled, onChange, style, + role, }: ItemProps) { + const labelId = React.useId() const { state: hovered, onIn: onHoverIn, @@ -69,6 +74,7 @@ function Item({ const state = React.useMemo( () => ({ + id: labelId, name, value, disabled: disabled ?? false, @@ -76,7 +82,7 @@ function Item({ pressed, focused, }), - [name, value, disabled, hovered, pressed, focused], + [labelId, name, value, disabled, hovered, pressed, focused], ) return ( @@ -84,9 +90,14 @@ function Item({ ) { const t = useTheme() - const {disabled} = React.useContext(ItemContext) + const {id, disabled} = React.useContext(ItemContext) return (