diff --git a/packages/react-native/Libraries/Components/Button.js b/packages/react-native/Libraries/Components/Button.js
index 081403800cd7a2..dcf0c92c3c3fff 100644
--- a/packages/react-native/Libraries/Components/Button.js
+++ b/packages/react-native/Libraries/Components/Button.js
@@ -159,6 +159,7 @@ export type ButtonProps = $ReadOnly<{
'aria-checked'?: ?boolean | 'mixed',
'aria-disabled'?: ?boolean,
'aria-expanded'?: ?boolean,
+ 'aria-invalid'?: ?boolean,
'aria-selected'?: ?boolean,
/**
@@ -296,6 +297,7 @@ const Button: component(
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
+ 'aria-invalid': ariaInvalid,
'aria-label': ariaLabel,
'aria-selected': ariaSelected,
importantForAccessibility,
@@ -331,6 +333,7 @@ const Button: component(
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
+ invalid: ariaInvalid ?? accessibilityState?.invalid,
selected: ariaSelected ?? accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Pressable/Pressable.js b/packages/react-native/Libraries/Components/Pressable/Pressable.js
index ae4cb5e3fd489c..c2991fbb637eb8 100644
--- a/packages/react-native/Libraries/Components/Pressable/Pressable.js
+++ b/packages/react-native/Libraries/Components/Pressable/Pressable.js
@@ -179,6 +179,7 @@ function Pressable(
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
+ 'aria-invalid': ariaInvalid,
'aria-label': ariaLabel,
'aria-selected': ariaSelected,
cancelable,
@@ -218,6 +219,7 @@ function Pressable(
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
+ invalid: ariaInvalid ?? accessibilityState?.invalid,
selected: ariaSelected ?? accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Pressable/__tests__/__snapshots__/Pressable-test.js.snap b/packages/react-native/Libraries/Components/Pressable/__tests__/__snapshots__/Pressable-test.js.snap
index 307aaba80c6af8..36839b2d4e3f21 100644
--- a/packages/react-native/Libraries/Components/Pressable/__tests__/__snapshots__/Pressable-test.js.snap
+++ b/packages/react-native/Libraries/Components/Pressable/__tests__/__snapshots__/Pressable-test.js.snap
@@ -8,6 +8,7 @@ exports[` should render as expected: should deep render when mocked
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -44,6 +45,7 @@ exports[` should render as expected: should deep render when not mo
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -80,6 +82,7 @@ exports[` should be disabled when disabled is true:
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -116,6 +119,7 @@ exports[` should be disabled when disabled is true:
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -152,6 +156,7 @@ exports[` should be disable
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -188,6 +193,7 @@ exports[` should be disable
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -224,6 +230,7 @@ exports[` shou
"checked": true,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -260,6 +267,7 @@ exports[` shou
"checked": true,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -296,6 +304,7 @@ exports[` sh
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -332,6 +341,7 @@ exports[` sh
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js
index 9cf46b2f6985ff..cb1947f91ced50 100644
--- a/packages/react-native/Libraries/Components/TextInput/TextInput.js
+++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js
@@ -356,6 +356,7 @@ function InternalTextInput(props: TextInputProps): React.Node {
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
+ 'aria-invalid': ariaInvalid,
'aria-selected': ariaSelected,
accessibilityState,
id,
@@ -620,6 +621,7 @@ function InternalTextInput(props: TextInputProps): React.Node {
ariaChecked != null ||
ariaDisabled != null ||
ariaExpanded != null ||
+ ariaInvalid != null ||
ariaSelected != null
) {
_accessibilityState = {
@@ -627,6 +629,7 @@ function InternalTextInput(props: TextInputProps): React.Node {
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
+ invalid: ariaInvalid ?? accessibilityState?.invalid,
selected: ariaSelected ?? accessibilityState?.selected,
};
}
diff --git a/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js b/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js
index 86a0d33cecc703..1799f79df5f07a 100644
--- a/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js
+++ b/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js
@@ -415,6 +415,7 @@ jest.unmock('../TextInput');
"checked": true,
"disabled": true,
"expanded": true,
+ "invalid": true,
"selected": true,
}
}
@@ -434,7 +435,6 @@ jest.unmock('../TextInput');
aria-flowto="flowto"
aria-haspopup={true}
aria-hidden={true}
- aria-invalid={true}
aria-keyshortcuts="Cmd+S"
aria-label="label"
aria-labelledby="labelledby"
diff --git a/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js b/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js
index 776076101bf8f9..9bba5172d5e273 100644
--- a/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js
+++ b/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js
@@ -147,6 +147,8 @@ class TouchableBounce extends React.Component<
this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,
expanded:
this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
+ invalid:
+ this.props['aria-invalid'] ?? this.props.accessibilityState?.invalid,
selected:
this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js b/packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js
index 1cc6533cd9eb75..2e3cc0053fdf7e 100644
--- a/packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js
+++ b/packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js
@@ -308,6 +308,8 @@ class TouchableNativeFeedback extends React.Component<
this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,
expanded:
this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
+ invalid:
+ this.props['aria-invalid'] ?? this.props.accessibilityState?.invalid,
selected:
this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Touchable/TouchableOpacity.js b/packages/react-native/Libraries/Components/Touchable/TouchableOpacity.js
index c965c5ad02f2d4..388e6086f17d60 100644
--- a/packages/react-native/Libraries/Components/Touchable/TouchableOpacity.js
+++ b/packages/react-native/Libraries/Components/Touchable/TouchableOpacity.js
@@ -271,6 +271,8 @@ class TouchableOpacity extends React.Component<
this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,
expanded:
this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
+ invalid:
+ this.props['aria-invalid'] ?? this.props.accessibilityState?.invalid,
selected:
this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js b/packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js
index 037ac5255c1efc..febaf3fb6e4778 100755
--- a/packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js
+++ b/packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js
@@ -243,6 +243,7 @@ export default function TouchableWithoutFeedback(
checked: props['aria-checked'] ?? props.accessibilityState?.checked,
disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
+ invalid: props['aria-invalid'] ?? props.accessibilityState?.invalid,
selected: props['aria-selected'] ?? props.accessibilityState?.selected,
};
diff --git a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableNativeFeedback-test.js.snap b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableNativeFeedback-test.js.snap
index 6802f754650b9a..d693f9deab2686 100644
--- a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableNativeFeedback-test.js.snap
+++ b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableNativeFeedback-test.js.snap
@@ -8,6 +8,7 @@ exports[` should render as expected 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -39,6 +40,7 @@ exports[` shoul
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -101,6 +104,7 @@ exports[` should be disabled when disab
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -194,6 +200,7 @@ exports[`TouchableWithoutFeedback renders correctly 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableOpacity-test.js.snap b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableOpacity-test.js.snap
index 17f2e7f6f764e0..860b6144a061d0 100644
--- a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableOpacity-test.js.snap
+++ b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableOpacity-test.js.snap
@@ -8,6 +8,7 @@ exports[`TouchableOpacity renders correctly 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -49,6 +50,7 @@ exports[`TouchableOpacity renders in disabled state when a disabled prop is pass
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -90,6 +92,7 @@ exports[`TouchableOpacity renders in disabled state when a key disabled in acces
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableWithoutFeedback-test.js.snap b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableWithoutFeedback-test.js.snap
index 932c5f133c038f..44cee36dee3512 100644
--- a/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableWithoutFeedback-test.js.snap
+++ b/packages/react-native/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableWithoutFeedback-test.js.snap
@@ -8,6 +8,7 @@ exports[`TouchableWithoutFeedback renders correctly 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -33,6 +34,7 @@ exports[`TouchableWithoutFeedback with disabled state should be disabled when di
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -56,6 +58,7 @@ exports[`TouchableWithoutFeedback with disabled state should be disabled when di
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -79,6 +82,7 @@ exports[`TouchableWithoutFeedback with disabled state should disable button when
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -102,6 +106,7 @@ exports[`TouchableWithoutFeedback with disabled state should keep accessibilityS
"checked": true,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -125,6 +130,7 @@ exports[`TouchableWithoutFeedback with disabled state should overwrite accessibi
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Components/View/View.js b/packages/react-native/Libraries/Components/View/View.js
index 5e1cb1469023e3..edd967d5c24cc0 100644
--- a/packages/react-native/Libraries/Components/View/View.js
+++ b/packages/react-native/Libraries/Components/View/View.js
@@ -40,6 +40,7 @@ const View: component(
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-hidden': ariaHidden,
+ 'aria-invalid': ariaInvalid,
'aria-label': ariaLabel,
'aria-labelledby': ariaLabelledBy,
'aria-live': ariaLive,
@@ -67,12 +68,14 @@ const View: component(
ariaChecked != null ||
ariaDisabled != null ||
ariaExpanded != null ||
+ ariaInvalid != null ||
ariaSelected != null
? {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
+ invalid: ariaInvalid ?? accessibilityState?.invalid,
selected: ariaSelected ?? accessibilityState?.selected,
}
: undefined;
diff --git a/packages/react-native/Libraries/Components/View/ViewAccessibility.d.ts b/packages/react-native/Libraries/Components/View/ViewAccessibility.d.ts
index bf4bee39538555..c35eadfcc5439e 100644
--- a/packages/react-native/Libraries/Components/View/ViewAccessibility.d.ts
+++ b/packages/react-native/Libraries/Components/View/ViewAccessibility.d.ts
@@ -56,6 +56,7 @@ export interface AccessibilityProps
'aria-checked'?: boolean | 'mixed' | undefined;
'aria-disabled'?: boolean | undefined;
'aria-expanded'?: boolean | undefined;
+ 'aria-invalid'?: boolean | undefined;
'aria-selected'?: boolean | undefined;
/**
@@ -161,6 +162,10 @@ export interface AccessibilityState {
* When present, informs accessible tools the element is expanded or collapsed
*/
expanded?: boolean | undefined;
+ /**
+ * When present, informs accessible tools the element is invalid
+ */
+ invalid?: boolean | undefined;
}
export interface AccessibilityValue {
diff --git a/packages/react-native/Libraries/Components/View/ViewAccessibility.js b/packages/react-native/Libraries/Components/View/ViewAccessibility.js
index 08ba5e0a0477a8..78474e1fd03588 100644
--- a/packages/react-native/Libraries/Components/View/ViewAccessibility.js
+++ b/packages/react-native/Libraries/Components/View/ViewAccessibility.js
@@ -186,6 +186,10 @@ export type AccessibilityState = {
* When present, informs accessible tools the element is expanded or collapsed
*/
expanded?: ?boolean,
+ /**
+ * When present, informs accessible tools the element is invalid
+ */
+ invalid?: ?boolean,
...
};
@@ -405,6 +409,7 @@ export type AccessibilityProps = $ReadOnly<{
'aria-checked'?: ?boolean | 'mixed',
'aria-disabled'?: ?boolean,
'aria-expanded'?: ?boolean,
+ 'aria-invalid'?: ?boolean,
'aria-selected'?: ?boolean,
/** A value indicating whether the accessibility elements contained within
* this accessibility element are hidden.
diff --git a/packages/react-native/Libraries/Components/View/__tests__/View-test.js b/packages/react-native/Libraries/Components/View/__tests__/View-test.js
index 39db27fc3428f5..7cc0f13a1956e9 100644
--- a/packages/react-native/Libraries/Components/View/__tests__/View-test.js
+++ b/packages/react-native/Libraries/Components/View/__tests__/View-test.js
@@ -116,6 +116,7 @@ describe('View compat with web', () => {
"checked": true,
"disabled": true,
"expanded": true,
+ "invalid": true,
"selected": true,
}
}
@@ -140,7 +141,6 @@ describe('View compat with web', () => {
aria-errormessage="errormessage"
aria-flowto="flowto"
aria-haspopup={true}
- aria-invalid={true}
aria-keyshortcuts="Cmd+S"
aria-level={3}
aria-modal={true}
diff --git a/packages/react-native/Libraries/Components/__tests__/__snapshots__/Button-test.js.snap b/packages/react-native/Libraries/Components/__tests__/__snapshots__/Button-test.js.snap
index 5b4294e0e8c850..be81fb8340259c 100644
--- a/packages/react-native/Libraries/Components/__tests__/__snapshots__/Button-test.js.snap
+++ b/packages/react-native/Libraries/Components/__tests__/__snapshots__/Button-test.js.snap
@@ -9,6 +9,7 @@ exports[` should be disabled and it should set accessibilityState to d
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -75,6 +76,7 @@ exports[` should be disabled when disabled is empty and accessibilityS
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -141,6 +143,7 @@ exports[` should be disabled when disabled={true} and accessibilitySta
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -207,6 +210,7 @@ exports[` should be set importantForAccessibility={no-hide-descendants
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -269,6 +273,7 @@ exports[` should be set importantForAccessibility={no-hide-descendants
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -331,6 +336,7 @@ exports[` should not be disabled when disabled={false} and accessibili
"checked": undefined,
"disabled": false,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -393,6 +399,7 @@ exports[` should not be disabled when disabled={false} and accessibili
"checked": undefined,
"disabled": false,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -455,6 +462,7 @@ exports[` should overwrite accessibilityState with value of disabled p
"checked": undefined,
"disabled": true,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
@@ -521,6 +529,7 @@ exports[` should render as expected 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Image/Image.android.js b/packages/react-native/Libraries/Image/Image.android.js
index fa4f65243bd2f0..a4960b26ff3398 100644
--- a/packages/react-native/Libraries/Image/Image.android.js
+++ b/packages/react-native/Libraries/Image/Image.android.js
@@ -193,6 +193,7 @@ let BaseImage: AbstractImageAndroid = React.forwardRef(
checked: props['aria-checked'] ?? props.accessibilityState?.checked,
disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
+ invalid: props['aria-invalid'] ?? props.accessibilityState?.invalid,
selected: props['aria-selected'] ?? props.accessibilityState?.selected,
},
};
diff --git a/packages/react-native/Libraries/Image/Image.ios.js b/packages/react-native/Libraries/Image/Image.ios.js
index 337411aff73107..1c42945d1339d7 100644
--- a/packages/react-native/Libraries/Image/Image.ios.js
+++ b/packages/react-native/Libraries/Image/Image.ios.js
@@ -144,6 +144,7 @@ let BaseImage: AbstractImageIOS = React.forwardRef((props, forwardedRef) => {
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
+ 'aria-invalid': ariaInvalid,
'aria-selected': ariaSelected,
src,
...restProps
@@ -154,6 +155,7 @@ let BaseImage: AbstractImageIOS = React.forwardRef((props, forwardedRef) => {
checked: ariaChecked ?? props.accessibilityState?.checked,
disabled: ariaDisabled ?? props.accessibilityState?.disabled,
expanded: ariaExpanded ?? props.accessibilityState?.expanded,
+ invalid: ariaInvalid ?? props.accessibilityState?.invalid,
selected: ariaSelected ?? props.accessibilityState?.selected,
};
const accessibilityLabel = props['aria-label'] ?? props.accessibilityLabel;
diff --git a/packages/react-native/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap b/packages/react-native/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap
index 310832436732e3..281702d7cb9d74 100644
--- a/packages/react-native/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap
+++ b/packages/react-native/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap
@@ -18,6 +18,7 @@ exports[`Image should render as when not mocked 1`] = `
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/LogBox/UI/__tests__/__snapshots__/LogBoxInspectorStackFrames-test.js.snap b/packages/react-native/Libraries/LogBox/UI/__tests__/__snapshots__/LogBoxInspectorStackFrames-test.js.snap
index 831c0e692e77c2..8388851ae4904c 100644
--- a/packages/react-native/Libraries/LogBox/UI/__tests__/__snapshots__/LogBoxInspectorStackFrames-test.js.snap
+++ b/packages/react-native/Libraries/LogBox/UI/__tests__/__snapshots__/LogBoxInspectorStackFrames-test.js.snap
@@ -146,6 +146,7 @@ exports[`LogBoxInspectorStackFrames should render stack frames with 1 frame coll
"checked": undefined,
"disabled": undefined,
"expanded": undefined,
+ "invalid": undefined,
"selected": undefined,
}
}
diff --git a/packages/react-native/Libraries/Text/Text.js b/packages/react-native/Libraries/Text/Text.js
index aef37d83b35d62..ea6a7797eb7829 100644
--- a/packages/react-native/Libraries/Text/Text.js
+++ b/packages/react-native/Libraries/Text/Text.js
@@ -50,6 +50,7 @@ const TextImpl: component(
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-label': ariaLabel,
+ 'aria-invalid': ariaInvalid,
'aria-selected': ariaSelected,
children,
ellipsizeMode,
@@ -85,6 +86,7 @@ const TextImpl: component(
ariaChecked != null ||
ariaDisabled != null ||
ariaExpanded != null ||
+ ariaInvalid != null ||
ariaSelected != null
) {
if (_accessibilityState != null) {
@@ -93,6 +95,7 @@ const TextImpl: component(
checked: ariaChecked ?? _accessibilityState.checked,
disabled: ariaDisabled ?? _accessibilityState.disabled,
expanded: ariaExpanded ?? _accessibilityState.expanded,
+ invalid: ariaInvalid ?? _accessibilityState.invalid,
selected: ariaSelected ?? _accessibilityState.selected,
};
} else {
@@ -101,6 +104,7 @@ const TextImpl: component(
checked: ariaChecked,
disabled: ariaDisabled,
expanded: ariaExpanded,
+ invalid: ariaInvalid,
selected: ariaSelected,
};
}
diff --git a/packages/react-native/Libraries/Text/TextProps.js b/packages/react-native/Libraries/Text/TextProps.js
index 805abe9cf1e6d0..0d59121b213ff8 100644
--- a/packages/react-native/Libraries/Text/TextProps.js
+++ b/packages/react-native/Libraries/Text/TextProps.js
@@ -162,6 +162,7 @@ type TextBaseProps = $ReadOnly<{
'aria-checked'?: ?boolean | 'mixed',
'aria-disabled'?: ?boolean,
'aria-expanded'?: ?boolean,
+ 'aria-invalid'?: ?boolean,
'aria-selected'?: ?boolean,
/**
diff --git a/packages/react-native/Libraries/Text/__tests__/Text-test.js b/packages/react-native/Libraries/Text/__tests__/Text-test.js
index f0a6a54479b52c..fb4c5c3c21f0e6 100644
--- a/packages/react-native/Libraries/Text/__tests__/Text-test.js
+++ b/packages/react-native/Libraries/Text/__tests__/Text-test.js
@@ -128,6 +128,7 @@ describe('Text compat with web', () => {
"checked": true,
"disabled": true,
"expanded": true,
+ "invalid": true,
"selected": true,
}
}
@@ -147,7 +148,6 @@ describe('Text compat with web', () => {
aria-flowto="flowto"
aria-haspopup={true}
aria-hidden={true}
- aria-invalid={true}
aria-keyshortcuts="Cmd+S"
aria-labelledby="labelledby"
aria-level={3}
diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap
index 9d91aebc889d81..a8b6741425a4e0 100644
--- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap
+++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap
@@ -1518,6 +1518,7 @@ exports[`public API should not change unintentionally Libraries/Components/Butto
\\"aria-checked\\"?: ?boolean | \\"mixed\\",
\\"aria-disabled\\"?: ?boolean,
\\"aria-expanded\\"?: ?boolean,
+ \\"aria-invalid\\"?: ?boolean,
\\"aria-selected\\"?: ?boolean,
importantForAccessibility?: ?(\\"auto\\" | \\"yes\\" | \\"no\\" | \\"no-hide-descendants\\"),
accessibilityHint?: ?string,
@@ -3629,6 +3630,7 @@ export type AccessibilityState = {
checked?: ?boolean | \\"mixed\\",
busy?: ?boolean,
expanded?: ?boolean,
+ invalid?: ?boolean,
...
};
export type AccessibilityValue = $ReadOnly<{
@@ -3674,6 +3676,7 @@ export type AccessibilityProps = $ReadOnly<{
\\"aria-checked\\"?: ?boolean | \\"mixed\\",
\\"aria-disabled\\"?: ?boolean,
\\"aria-expanded\\"?: ?boolean,
+ \\"aria-invalid\\"?: ?boolean,
\\"aria-selected\\"?: ?boolean,
\\"aria-hidden\\"?: ?boolean,
}>;
@@ -7833,6 +7836,7 @@ type TextBaseProps = $ReadOnly<{
\\"aria-checked\\"?: ?boolean | \\"mixed\\",
\\"aria-disabled\\"?: ?boolean,
\\"aria-expanded\\"?: ?boolean,
+ \\"aria-invalid\\"?: ?boolean,
\\"aria-selected\\"?: ?boolean,
\\"aria-labelledby\\"?: ?string,
children?: ?React.Node,
diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm
index 92b8b1d6309dce..05f9a420ace640 100644
--- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm
+++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm
@@ -1272,6 +1272,10 @@ - (NSString *)accessibilityValue
[valueComponents addObject:RCTLocalizedString("busy", "an element currently being updated or modified")];
}
+ if (accessibilityState.invalid) {
+ [valueComponents addObject:RCTLocalizedString("invalid", "an input field which has failed validation or does not conform to the expected format")];
+ }
+
// Using super.accessibilityValue:
// 1. to access the value that is set to accessibilityValue in updateProps
// 2. can't access from self.accessibilityElement because it resolves to self
diff --git a/packages/react-native/React/Views/RCTView.m b/packages/react-native/React/Views/RCTView.m
index 7fd1f3453b01e1..addcc000c0c299 100644
--- a/packages/react-native/React/Views/RCTView.m
+++ b/packages/react-native/React/Views/RCTView.m
@@ -325,6 +325,8 @@ - (NSString *)accessibilityValue
RCTLocalizedString("collapsed", "a menu, dialog, accordian panel, or other widget which is collapsed"),
@"mixed" :
RCTLocalizedString("mixed", "a checkbox, radio button, or other widget which is both checked and unchecked"),
+ @"invalid" :
+ RCTLocalizedString("invalid", "an input field which has failed validation or does not conform to the expected format"),
};
});
@@ -369,6 +371,9 @@ - (NSString *)accessibilityValue
if ([state isEqualToString:@"busy"] && [val isKindOfClass:[NSNumber class]] && [val boolValue]) {
[valueComponents addObject:rolesAndStatesDescription[@"busy"]];
}
+ if ([state isEqualToString:@"invalid"] && [val isKindOfClass:[NSNumber class]] && [val boolValue]) {
+ [valueComponents addObject:rolesAndStatesDescription[@"invalid"]];
+ }
}
// Handle accessibilityValue.
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java
index c3a0326a333be5..251b225b449bdc 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java
@@ -60,6 +60,7 @@ public abstract class BaseViewManagerNutsbalk
Opsomming
besig
+ ongeldig
is uitgevou
is ingevou
ontkies
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ar/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ar/strings.xml
index 09606420a91f48..cfebef03b82f03 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ar/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ar/strings.xml
@@ -22,6 +22,7 @@
شريط الأدوات
ملخص
مشغول
+ غير صالح
موسع
مطوي
غير محدَد
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bg/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bg/strings.xml
index a50ed8236cf755..30e4a776744f3b 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bg/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bg/strings.xml
@@ -22,6 +22,7 @@
Лента с инструменти
Обобщение
заето
+ невалидно
разширено
свито
неизбрано
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml
index 1f097ede444236..9b800538821124 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml
@@ -22,6 +22,7 @@
টুল বার
সারসংক্ষেপ
ব্যস্ত
+ অবৈধ
বাড়ানো হয়েছে
ছোট করা হয়েছে
আনসিলেক্ট করা হয়েছে
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-cs/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-cs/strings.xml
index 53b972bbfd8f41..2569c8322baa53 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-cs/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-cs/strings.xml
@@ -22,6 +22,7 @@
Panel nástrojů
Přehled
zaneprázdněno
+ neplatné
rozbaleno
sbaleno
nevybráno
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-da/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-da/strings.xml
index 6c51adb91eca54..ff344ab99ed635 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-da/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-da/strings.xml
@@ -19,6 +19,7 @@
Værktøjslinje
Oversigt
optaget
+ ugyldigt
udvidet
skjult
fravalgt
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-de/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-de/strings.xml
index d0aaf6106fe419..bf28dbd9ae2530 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-de/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-de/strings.xml
@@ -19,6 +19,7 @@
Symbolleiste
Übersicht
in Gebrauch
+ ungültig
eingeblendet
ausgeblendet
nicht ausgewählt
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-el/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-el/strings.xml
index 0fdf564435f00a..c7e9365d251039 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-el/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-el/strings.xml
@@ -22,6 +22,7 @@
Γραμμή εργαλείων
Σύνοψη
απασχολημένος/η
+ άκυρος
διευρυμένο
συμπτυγμένο
μη επιλεγμένα
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es-rES/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es-rES/strings.xml
index d3200129fe5e0b..614e47f795bca4 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es-rES/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es-rES/strings.xml
@@ -22,6 +22,7 @@
Barra de herramientas
Resumen
ocupado
+ inválido
ampliado
contraído
sin seleccionar
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es/strings.xml
index b9781f5e910896..39b782cbfab578 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-es/strings.xml
@@ -22,6 +22,7 @@
Barra de herramientas
Resumen
ocupado
+ inválido
expandido
contraído
no seleccionado
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-et/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-et/strings.xml
index ba66aff65d1d8d..1299dfb40a0f57 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-et/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-et/strings.xml
@@ -21,6 +21,7 @@
Tööriistariba
Kokkuvõte
hõivatud
+ vigane
laiendatud
ahendatud
valimata
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fa/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fa/strings.xml
index e669a7bb65afd9..616db7bc6c016b 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fa/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fa/strings.xml
@@ -22,6 +22,7 @@
نوار ابزار
خلاصه
مشغول
+ نامعتبر
بزرگشده
کوچکشده
لغو انتخاب شد
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fi/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fi/strings.xml
index ce80c989f9e75d..1765d2980eaf74 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fi/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fi/strings.xml
@@ -22,6 +22,7 @@
Työkalupalkki
Yhteenveto
varattu
+ virheellinen
laajennettu
pienennetty
ei valittu
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr-rCA/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr-rCA/strings.xml
index 116e8fc71442b2..5d965d64fa8f9a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr-rCA/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr-rCA/strings.xml
@@ -20,6 +20,7 @@
Barre d’outils
Résumé
en cours de traitement
+ invalide
agrandi
réduit
désélectionné
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr/strings.xml
index aad6fa4a4e9542..2bfed1e121cee5 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-fr/strings.xml
@@ -20,6 +20,7 @@
Barre d’outils
Récapitulatif
opération en cours
+ invalide
agrandi
réduit
désélectionné(s)
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-gu/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-gu/strings.xml
index 6dac5291f7830c..fcc17c08b3d0b1 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-gu/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-gu/strings.xml
@@ -22,6 +22,7 @@
ટૂલ બાર
સારાંશ
વ્યસ્ત
+ અમાન
વિસ્તૃત
નાનું
પસંદગીમાંથી કાઢી નાખ્યું
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hi/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hi/strings.xml
index 17e5277843ad9d..4741e2ec4d5b96 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hi/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hi/strings.xml
@@ -22,6 +22,7 @@
टूल बार
सारांश
व्यस्त
+ अवैध
बड़ा किया गया
छोटा किया गया
नहीं चुने गए
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hr/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hr/strings.xml
index d2d2419b247b82..481753c427293d 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hr/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hr/strings.xml
@@ -22,6 +22,7 @@
Traka s alatima
Sažetak
zauzeto
+ nevažeći
prošireno
sažeto
poništen odabir
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hu/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hu/strings.xml
index ea922b64737f02..13e74fe10e30df 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hu/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-hu/strings.xml
@@ -22,6 +22,7 @@
Eszköztár
Összegzés
elfoglalt
+ érvénytelen
kibontva
összecsukva
nincs kiválasztva
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-it/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-it/strings.xml
index 0a87368ca7c5c3..cb86591000022b 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-it/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-it/strings.xml
@@ -18,6 +18,7 @@
Barra degli strumenti
Riepilogo
occupato
+ non valido/a
aperto
chiuso
non selezionato
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-iw/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-iw/strings.xml
index d032407ea5be96..adb7533492f9c6 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-iw/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-iw/strings.xml
@@ -22,6 +22,7 @@
סרגל כלים
סיכום
תפוס
+ לא תקין
מורחב
מצומצם
הבחירה בוטלה
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ja/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ja/strings.xml
index 871ca3b04aa55f..48e5dc44dedfaa 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ja/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ja/strings.xml
@@ -22,6 +22,7 @@
ツールバー
概要
作業中
+ 無効
展開中
縮小中
未選択
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ka/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ka/strings.xml
index c41275f667493b..d3f57d5b45c275 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ka/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ka/strings.xml
@@ -21,6 +21,7 @@
ხელსაწყოების ზოლი
შეჯამება
დაკავებული
+ არასწორი
გაშლილი
აკეცილი
აურჩეველი
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-km/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-km/strings.xml
index 88e3287d26a32f..489691626baabb 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-km/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-km/strings.xml
@@ -22,6 +22,7 @@
របារឧបករណ៍
សេចក្ដីសង្ខេប
ជាប់រវល់
+ មិនត្រឹមត្រូវ
បានពង្រីក
បានបង្រួម
បាបនដោះការជ្រើសរើស
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-kn/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-kn/strings.xml
index 15c52aff789e9d..2fa03d31218fc0 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-kn/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-kn/strings.xml
@@ -22,6 +22,7 @@
ಟೂಲ್ ಬಾರ್
ಸಾರಾಂಶ
ಕಾರ್ಯನಿರತ
+ ಅಮಾನ
ವಿಸ್ತರಿಸಲಾಗಿದೆ
ಮುಚ್ಚಿದೆ
ಆಯ್ಕೆ ರದ್ದುಮಾಡಲಾಗಿದೆ
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ko/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ko/strings.xml
index 7370e6d18ac660..5eab6dba9459e9 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ko/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ko/strings.xml
@@ -22,6 +22,7 @@
도구 표시줄
요약
처리 중
+ 유효하지 않음
확대됨
숨겨짐
선택되지 않음
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lt/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lt/strings.xml
index 454a465ec4c384..491dc3d166979a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lt/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lt/strings.xml
@@ -22,6 +22,7 @@
Įrankių juosta
Suvestinė
naudojama
+ neteisinga
išskleista
sutraukta
pasirinkimas atšauktas
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lv/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lv/strings.xml
index 903d064e649c05..6d36addb55929e 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lv/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-lv/strings.xml
@@ -22,6 +22,7 @@
Rīkjosla
Kopsavilkums
aizņemts
+ nepareizs
izvērsts
sakļauts
nav atlasīts
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mk/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mk/strings.xml
index 9ed07d6fdf4c27..66d52d91c63ce9 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mk/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mk/strings.xml
@@ -22,6 +22,7 @@
Лента со алатки
Резиме
зафатено
+ невалидно
проширено
собрано
изборот е поништен
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ml/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ml/strings.xml
index a9aa446a89b7a8..8fa6cf40913d0a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ml/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ml/strings.xml
@@ -22,6 +22,7 @@
ടൂൾ ബാർ
സംഗ്രഹം
തിരക്കിലാണ്
+ അസാധുവായ
വിപുലീകരിച്ചു
ചുരുക്കി
തിരഞ്ഞെടുത്തത് മാറ്റി
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mr/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mr/strings.xml
index bf953bf7a29598..53634fef49ca85 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mr/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-mr/strings.xml
@@ -22,6 +22,7 @@
टूल बार
सारांश
व्यग्र
+ अवैध
विस्तारित केले
संकुचित केले
निवड रद्द केलेले
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ms/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ms/strings.xml
index c1091f8d92ff8d..2398ea33dbff84 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ms/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ms/strings.xml
@@ -20,6 +20,7 @@
Bar Alat
Ringkasan
sibuk
+ tidak sah
dikembangkan
diruntuhkan
dinyahpilih
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-my/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-my/strings.xml
index 8a8424acc41b4d..98267aa88d18a7 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-my/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-my/strings.xml
@@ -22,6 +22,7 @@
ကိရိယာ ဘားတန်း
အနှစ်ချုပ်
လုပ်ဆောင်နေဆဲ
+ မှန်ကန်မှုမရှိ
ချဲ့ထားပြီး
ခေါက်သိမ်းထားပါတယ်
ရွေးမထားပါ
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-nl/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-nl/strings.xml
index feeed53f1ae50d..e27d136948b2ac 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-nl/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-nl/strings.xml
@@ -19,6 +19,7 @@
Werkbalk
Samenvatting
bezig
+ ongeldig
uitgevouwen
samengevouwen
gedeselecteerd
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pa/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pa/strings.xml
index 7cc4e095fa7f2b..eb0649e7895c86 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pa/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pa/strings.xml
@@ -22,6 +22,7 @@
ਟੂਲ ਬਾਰ
ਸਾਰ
ਵਿਅਸਤ
+ ਅਵੈਧ
ਵਿਸਤਾਰ ਕੀਤਾ ਗਿਆ
ਸਮੇਟਿਆ ਗਿਆ
ਚੋਣ ਹਟਾਈ ਗਈ
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pl/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pl/strings.xml
index 040ce847300b41..21aca3e015c9b6 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pl/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pl/strings.xml
@@ -19,6 +19,7 @@
Pasek narzędzi
Podsumowanie
zajęte
+ nieprawidłowe
rozwinięte
zwinięte
nie wybrano
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt-rPT/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt-rPT/strings.xml
index f3afd9bf3e5595..00ad35f9d1c3f0 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt-rPT/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt-rPT/strings.xml
@@ -21,6 +21,7 @@
Barra de ferramentas
Resumo
ocupado
+ inválido
expandido
fechado
não selecionado
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt/strings.xml
index 940fdce4c0b684..1c3691c409f316 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-pt/strings.xml
@@ -22,6 +22,7 @@
Barra de ferramentas
Resumo
ocupado
+ inválido
expandido
recolhido
desmarcados
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ro/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ro/strings.xml
index 571d7e6f357d86..2a433aaf462175 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ro/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ro/strings.xml
@@ -20,6 +20,7 @@
Bară de instrumente
Rezumat
ocupat
+ invalid
extins
restrâns
neselectat
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ru/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ru/strings.xml
index 3d4088ffc97f7e..62eaa6377cf4b5 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ru/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ru/strings.xml
@@ -22,6 +22,7 @@
Панель инструментов
Сводка
занято
+ недействительно
развернуто
свернуто
не выбрано
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-si/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-si/strings.xml
index 5aeb46293d7a4f..9f713adaf8c2e0 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-si/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-si/strings.xml
@@ -22,6 +22,7 @@
මෙවලම් තීරුව
සාරාංශය
කාර්යබහුලයි
+ අවලංගු
විහිදුවන ලදි
හකුළන ලදී
තේරීම ඉවත් කරන ලද
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sk/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sk/strings.xml
index 7d7f4b6c603fb5..217fdfe7af8f4a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sk/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sk/strings.xml
@@ -22,6 +22,7 @@
Panel s nástrojmi
Súhrn
obsadené
+ neplatné
rozbalené
zbalené
nevybrané
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sl/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sl/strings.xml
index a70f4bfac88177..71aaa397415ef9 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sl/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sl/strings.xml
@@ -22,6 +22,7 @@
Vrstica z orodji
Povzetek
zasedeno
+ neveljavno
razširjen
strnjeno
neizbrano
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sq/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sq/strings.xml
index 4b681fa5da2625..4661ac8ab2b82a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sq/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sq/strings.xml
@@ -22,6 +22,7 @@
Shiriti i mjeteve
Përmbledhja
I zënë
+ I pavlefshëm
zgjeruar
palosur
i pazgjedhur
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sr/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sr/strings.xml
index 28d6ea337cbda8..9602f449a684f7 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sr/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sr/strings.xml
@@ -22,6 +22,7 @@
Трака са алаткама
Резиме
заузето
+ неважећи
проширено
скупљено
избор опозван
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sv/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sv/strings.xml
index c40edbe7723586..91eb4e53b88a73 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sv/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sv/strings.xml
@@ -21,6 +21,7 @@
Verktygsfält
Sammanfattning
upptagen
+ ogiltig
utökad
minimerad
avmarkerad
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sw/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sw/strings.xml
index a26adb80d40d43..69f45eeadfb273 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sw/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-sw/strings.xml
@@ -22,6 +22,7 @@
Upau wa Zana
Muhtasari
shughulini
+ batili
imepanuliwa
imekunjwa
haijateuliwa
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ta/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ta/strings.xml
index 9823eab70ede1b..35f3798dac261c 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ta/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ta/strings.xml
@@ -22,6 +22,7 @@
கருவிப்பட்டி
சுருக்கம்
பணிமிகுதி
+ செல்லாதது
விரிவாக்கப்பட்டது
சுருக்கப்பட்டது
தேர்வுநீக்கப்பட்டது
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-te/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-te/strings.xml
index f08a251c185554..04efbc5fe8e783 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-te/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-te/strings.xml
@@ -22,6 +22,7 @@
టూల్ బార్
సమ్మరీ
బిజీగా ఉన్నారు
+ చెల్లన
విస్తరింపబడింది
కుదించబడింది
ఎంపిక తీసివేసారు
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-th/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-th/strings.xml
index f78b401f7b0aaf..0c86ee15d758a6 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-th/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-th/strings.xml
@@ -22,6 +22,7 @@
แถบเครื่องมือ
สรุป
ไม่ว่าง
+ ไม่ถูกต้อง
ขยายแล้ว
ยุบแล้ว
ไม่ได้เลือก
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-tr/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-tr/strings.xml
index f8866dfe87d6f0..7fbe68717144d8 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-tr/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-tr/strings.xml
@@ -22,6 +22,7 @@
Araç Çubuğu
Özet
meşgul
+ geçersiz
genişletilmiş
daraltılmış
seçili değil
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-uk/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-uk/strings.xml
index 02c3e74feae637..f0573ddb761115 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-uk/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-uk/strings.xml
@@ -22,6 +22,7 @@
Панель інструментів
Зведення
зайнято
+ недійсний
розгорнуто
згорнуто
не вибрано
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ur/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ur/strings.xml
index 7d1bd49dc5970f..3edf3f5b985bb7 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ur/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-ur/strings.xml
@@ -22,6 +22,7 @@
ٹول بار
خلاصہ
مصروف
+ غیر معتبر
توسیع کیا گیا
سکیڑا گیا
غیر منتخب کردہ
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-vi/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-vi/strings.xml
index 5a185889b86d8d..58f2320c22e580 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-vi/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-vi/strings.xml
@@ -20,6 +20,7 @@
Thanh công cụ
Tóm tắt
bận
+ không hợp lệ
đã mở rộng
đã thu gọn
không được chọn
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rCN/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rCN/strings.xml
index 3727372faeb3e7..1c3b33eb3dec4a 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rCN/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rCN/strings.xml
@@ -22,6 +22,7 @@
工具栏
摘要
忙碌中
+ 无效
已展开
已收起
未选中
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rHK/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rHK/strings.xml
index c2f4bc5e83e40b..ca540c81496f4c 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rHK/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rHK/strings.xml
@@ -22,6 +22,7 @@
工具列
摘要
忙碌中
+ 無效
已展開
已收合
已取消選取
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rTW/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rTW/strings.xml
index b6d6018cc4057d..7642f0e60f6560 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rTW/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values-zh-rTW/strings.xml
@@ -22,6 +22,7 @@
工具列
摘要
忙碌中
+ 無效
已展開
已收合
已取消選取
diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml
index a2f6ad5263150a..5a712e887b149f 100644
--- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml
@@ -76,6 +76,10 @@
name="state_busy_description"
description="an element currently being updated or modified"
>busy
+ invalid
expanded{std::nullopt};
enum { Unchecked, Checked, Mixed, None } checked{None};
};
@@ -78,7 +79,7 @@ constexpr bool operator==(
const AccessibilityState& rhs) {
return lhs.disabled == rhs.disabled && lhs.selected == rhs.selected &&
lhs.checked == rhs.checked && lhs.busy == rhs.busy &&
- lhs.expanded == rhs.expanded;
+ lhs.expanded == rhs.expanded && lhs.invalid == rhs.invalid;
}
constexpr bool operator!=(
diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h b/packages/react-native/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h
index 7b16f62dc5434b..6f2e9924a7bd40 100644
--- a/packages/react-native/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h
+++ b/packages/react-native/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h
@@ -170,6 +170,10 @@ inline void fromRawValue(
if (expanded != map.end()) {
fromRawValue(context, expanded->second, result.expanded);
}
+ auto invalid = map.find("invalid");
+ if (invalid != map.end()) {
+ fromRawValue(context, invalid->second, result.invalid);
+ }
}
inline std::string toString(
diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp
index f5ee897794e2c3..606816afe24413 100644
--- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp
+++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp
@@ -454,6 +454,10 @@ inline static void updateAccessibilityStateProp(
resultState["busy"] = newState->busy;
}
+ if (!oldState.has_value() || newState->invalid != oldState->invalid) {
+ resultState["invalid"] = newState->invalid;
+ }
+
if (!oldState.has_value() || newState->expanded != oldState->expanded) {
resultState["expanded"] =
newState->expanded.has_value() && newState->expanded.value();