Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
ede9130
Fix #74843: Include description in MenuItem accessibility label
rushatgabhane Jan 8, 2026
bc9f355
Fix #74881: Add English names for non-English language options
rushatgabhane Jan 8, 2026
693ba69
Fix #74887: Include emoji in status button label
rushatgabhane Jan 8, 2026
0bf4236
Fix #75469: Include display name and email in account switcher label
rushatgabhane Jan 8, 2026
59ade3a
Fix #76912: Add accessibility label to magic code input
rushatgabhane Jan 8, 2026
7a438e6
Fix #77371: Include selected emoji in status button label
rushatgabhane Jan 8, 2026
1fad90a
Fix #77424: Translate emoji category button labels
rushatgabhane Jan 8, 2026
ee2101a
Fix #77449: Include alternate text in recipient selection labels
rushatgabhane Jan 8, 2026
ad55fec
Fix #77456: Add weekday and month to calendar date labels
rushatgabhane Jan 8, 2026
bb3fc54
Fix #77457: Add descriptive label to referral program CTA
rushatgabhane Jan 8, 2026
d14ab85
Fix #77464: Add accessibility label to search menu button
rushatgabhane Jan 8, 2026
26493ec
Fix #77533: Include default indicator in workspace label
rushatgabhane Jan 8, 2026
2189785
Fix #77547: Add label and value to native text input
rushatgabhane Jan 8, 2026
19d7817
Fix #77557: Add accessibility label to amount text input
rushatgabhane Jan 8, 2026
a6c2f98
Fix #77559: Add descriptive labels to calendar picker controls
rushatgabhane Jan 8, 2026
14563d8
Fix #77569: Add label and textbox role to native text input
rushatgabhane Jan 8, 2026
b69e952
Fix #74871: Add distance currency to amount field label
rushatgabhane Jan 8, 2026
3618fd0
Fix #76904: Add step number and aria-current to step buttons
rushatgabhane Jan 8, 2026
d0d7b9b
Fix #77378: Add zip format hint for accessibility
rushatgabhane Jan 8, 2026
fe5e14e
Fix #74865: Add year to calendar date accessibility label
rushatgabhane Jan 8, 2026
2780040
Use LOCALE_TO_LANGUAGE_STRING for accessibility labels
rushatgabhane Jan 8, 2026
ea723ef
Fix BaseTextInput accessibility and add missing translations
rushatgabhane Jan 8, 2026
3063a47
Fix #76913: Add descriptive workspace row labels
rushatgabhane Jan 8, 2026
94d97d8
Fix #77461: Add position label to magic code input
rushatgabhane Jan 8, 2026
a46fb17
Fix #77564: Put description before title in MenuItem accessibility label
rushatgabhane Jan 8, 2026
0fdf294
Merge branch 'main' into a11y/labels-descriptions
rushatgabhane Jan 19, 2026
9a4503a
run prettier
rushatgabhane Jan 19, 2026
e13a406
fix style
rushatgabhane Jan 19, 2026
e7e6989
run prettier
rushatgabhane Jan 19, 2026
3d41093
fix test
rushatgabhane Jan 19, 2026
c535cb1
fix test
rushatgabhane Jan 19, 2026
b935bc7
run prettier
rushatgabhane Jan 19, 2026
903707b
fix tests
rushatgabhane Jan 19, 2026
3c0154d
fix #77557. add accessibilityValue prop
rushatgabhane Jan 19, 2026
9f42753
fix order
rushatgabhane Jan 21, 2026
5782675
Merge branch 'main' into a11y/labels-descriptions
rushatgabhane Jan 21, 2026
3b84961
add accessibility label property
rushatgabhane Jan 21, 2026
eaeb5c8
fallback to translation for iou amount label
rushatgabhane Jan 21, 2026
d899cfc
destructure translate from uselocalize
rushatgabhane Jan 21, 2026
0dffcce
add iou amount accessibility label with currency
rushatgabhane Jan 21, 2026
fd1137a
pass through accessibility label prop
rushatgabhane Jan 21, 2026
26ca8fd
use translated unit in accessibility label
rushatgabhane Jan 21, 2026
c8fd632
combine account and button label for accessibility
rushatgabhane Jan 21, 2026
e6daef7
fix magic code accesibility label. hardocde to length of digits
rushatgabhane Jan 21, 2026
cadf0b4
remove accessibilityHint prop zipFormat
rushatgabhane Jan 21, 2026
ac9e969
use combined accessibility for label/hint
rushatgabhane Jan 21, 2026
c9ba2df
compute accessibility label from label and hint
rushatgabhane Jan 21, 2026
4569ab6
add accessibility label prop to component
rushatgabhane Jan 21, 2026
0371de8
update accessibility label to search_filtersheader
rushatgabhane Jan 21, 2026
546669f
add default accessibility label logic and fallback
rushatgabhane Jan 21, 2026
fdecaa0
use accessibilitylabel value instead of inline
rushatgabhane Jan 21, 2026
f5d9e6d
refactor: add role badge and accessibility label
rushatgabhane Jan 21, 2026
879ddb5
add getuserfriendlyworkspacetype function
rushatgabhane Jan 21, 2026
95cf28c
refactor accessibility label to computed fields
rushatgabhane Jan 21, 2026
432702b
add accessibility label prop for screen reader
rushatgabhane Jan 21, 2026
c75907b
use inputProps.accessibilityLabel
rushatgabhane Jan 21, 2026
7dd7b6b
cleanup
rushatgabhane Jan 21, 2026
41d3a66
Merge branch 'Expensify:main' into a11y/labels-descriptions
rushatgabhane Jan 21, 2026
4ea9c49
Merge branch 'Expensify:main' into a11y/labels-descriptions
rushatgabhane Jan 21, 2026
008c4fd
Merge branch 'Expensify:main' into a11y/labels-descriptions
rushatgabhane Jan 21, 2026
4d880a2
fix merge
rushatgabhane Jan 22, 2026
7e52a38
fix merge
rushatgabhane Jan 22, 2026
65ff1ed
fix merge
rushatgabhane Jan 22, 2026
12656b2
address review comments
rushatgabhane Jan 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/AccountSwitcher.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import Avatar from './Avatar';
import ConfirmModal from './ConfirmModal';
import Icon from './Icon';
import * as Expensicons from './Icon/Expensicons';

Check warning on line 27 in src/components/AccountSwitcher.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'./Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import type {PopoverMenuItem} from './PopoverMenu';
import PopoverMenu from './PopoverMenu';
import {PressableWithFeedback} from './Pressable';
Expand Down Expand Up @@ -185,7 +185,7 @@
<TooltipToRender {...tooltipProps}>
<PressableWithFeedback
accessible
accessibilityLabel={translate('common.profile')}
accessibilityLabel={`${translate('common.profile')}, ${displayName}, ${Str.removeSMSDomain(currentUserPersonalDetails?.login ?? '')}`}
onPress={onPressSwitcher}
ref={buttonRef}
interactive={canSwitchAccounts}
Expand Down
6 changes: 5 additions & 1 deletion src/components/AmountTextInput.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {useNavigation} from '@react-navigation/native';
import React from 'react';
import type {NativeSyntheticEvent, StyleProp, TextInputKeyPressEvent, TextInputSelectionChangeEvent, TextStyle, ViewStyle} from 'react-native';
import useLocalize from '@hooks/useLocalize';
import CONST from '@src/CONST';
import type {TextSelection} from './Composer/types';
import TextInput from './TextInput';
Expand Down Expand Up @@ -42,7 +43,7 @@ type AmountTextInputProps = {

/** Hide the focus styles on TextInput */
hideFocusedState?: boolean;
} & Pick<BaseTextInputProps, 'autoFocus' | 'autoGrowExtraSpace' | 'submitBehavior' | 'ref' | 'onFocus' | 'onBlur' | 'disabled'>;
} & Pick<BaseTextInputProps, 'autoFocus' | 'autoGrowExtraSpace' | 'submitBehavior' | 'ref' | 'onFocus' | 'onBlur' | 'disabled' | 'accessibilityLabel'>;

function AmountTextInput({
formattedAmount,
Expand All @@ -59,9 +60,11 @@ function AmountTextInput({
shouldApplyPaddingToContainer = false,
ref,
disabled,
accessibilityLabel,
...rest
}: AmountTextInputProps) {
const navigation = useNavigation();
const {translate} = useLocalize();

return (
<TextInput
Expand All @@ -83,6 +86,7 @@ function AmountTextInput({
submitBehavior="submit"
selection={selection}
onSelectionChange={onSelectionChange}
accessibilityLabel={accessibilityLabel ?? translate('iou.amount')}
onKeyPress={onKeyPress as (event: TextInputKeyPressEvent) => void}
touchableInputWrapperStyle={touchableInputWrapperStyle}
// On iPad, even if the soft keyboard is hidden, the keyboard suggestion is still shown.
Expand Down
8 changes: 4 additions & 4 deletions src/components/DatePicker/CalendarPicker/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -193,13 +193,12 @@ function CalendarPicker({
hoverDimmingValue={1}
disabled={years.length <= 1}
testID="currentYearButton"
accessibilityLabel={translate('common.currentYear')}
accessibilityLabel={`${currentYearView}, ${translate('common.currentYear')}`}
role={CONST.ROLE.BUTTON}
>
<Text
style={themeStyles.sidebarLinkTextBold}
testID="currentYearText"
accessibilityLabel={translate('common.currentYear')}
>
{currentYearView}
</Text>
Expand All @@ -209,7 +208,7 @@ function CalendarPicker({
<Text
style={themeStyles.sidebarLinkTextBold}
testID="currentMonthText"
accessibilityLabel={translate('common.currentMonth')}
accessibilityLabel={`${monthNames.at(currentMonthView)}, ${translate('common.currentMonth')}`}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not really the same format as the year (January, current month instead of 2026, please select a year). I think we should probably be consistent.

Generally - have we had marketing take a glance at these? i think it would be good since it's effectively marketing copy.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

made it consistent - 2026, current year

>
{monthNames.at(currentMonthView)}
</Text>
Expand Down Expand Up @@ -272,13 +271,14 @@ function CalendarPicker({
onDayPressed(day);
};
const key = `${index}_day-${day}`;
const dateAccessibilityLabel = day ? format(currentDate, 'EEEE, MMMM d, yyyy') : '';
return (
<PressableWithoutFeedback
key={key}
disabled={isDisabled}
onPress={handleOnPress}
style={themeStyles.calendarDayRoot}
accessibilityLabel={day?.toString() ?? ''}
accessibilityLabel={dateAccessibilityLabel}
tabIndex={day ? 0 : -1}
accessible={!!day}
dataSet={{[CONST.SELECTION_SCRAPER_HIDDEN_ELEMENT]: true}}
Expand Down
2 changes: 1 addition & 1 deletion src/components/EmojiPicker/CategoryShortcutButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function CategoryShortcutButton({code, icon, onPress}: CategoryShortcutButtonPro
onHoverIn={() => setIsHighlighted(true)}
onHoverOut={() => setIsHighlighted(false)}
style={({pressed}) => [StyleUtils.getButtonBackgroundColorStyle(getButtonState(false, pressed)), styles.categoryShortcutButton, isHighlighted && styles.emojiItemHighlighted]}
accessibilityLabel={`emojiPicker.headers.${code}`}
accessibilityLabel={translate(`emojiPicker.headers.${code}` as TranslationPaths)}
role={CONST.ROLE.BUTTON}
sentryLabel={CONST.SENTRY_LABEL.EMOJI_PICKER.CATEGORY_SHORTCUT}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/EmojiPicker/EmojiPickerButtonDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function EmojiPickerButtonDropdown(
disabled={isDisabled}
onPress={onPress}
id="emojiDropdownButton"
accessibilityLabel="statusEmoji"
accessibilityLabel={value ? `${value}, ${translate('statusPage.status')}` : translate('statusPage.status')}
role={CONST.ROLE.BUTTON}
sentryLabel={CONST.SENTRY_LABEL.EMOJI_PICKER.BUTTON_DROPDOWN}
>
Expand Down
3 changes: 2 additions & 1 deletion src/components/InteractiveStepSubHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import variables from '@styles/variables';
import CONST from '@src/CONST';
import Icon from './Icon';
import * as Expensicons from './Icon/Expensicons';

Check warning on line 10 in src/components/InteractiveStepSubHeader.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'./Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import PressableWithFeedback from './Pressable/PressableWithFeedback';
import Text from './Text';

Expand Down Expand Up @@ -100,7 +100,8 @@
disabled={isLockedStep || !onStepSelected}
onPress={moveToStep}
accessible
accessibilityLabel={stepName[index]}
accessibilityLabel={`${index + 1}`}
aria-current={currentStep === index ? 'step' : undefined}
role={CONST.ROLE.BUTTON}
>
{isCompletedStep ? (
Expand Down
8 changes: 7 additions & 1 deletion src/components/MagicCodeInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type {FocusEvent, TextInput as RNTextInput, TextInputKeyPressEvent} from
import {StyleSheet, View} from 'react-native';
import {Gesture, GestureDetector} from 'react-native-gesture-handler';
import Animated, {useAnimatedStyle, useSharedValue, withDelay, withRepeat, withSequence, withTiming} from 'react-native-reanimated';
import useLocalize from '@hooks/useLocalize';
import useNetwork from '@hooks/useNetwork';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
Expand Down Expand Up @@ -100,6 +101,9 @@ type MagicCodeInputProps = {
/** TestID for test */
testID?: string;

/** Accessibility label for the input */
accessibilityLabel?: string;

/** Reference to the outer element */
ref?: ForwardedRef<MagicCodeInputHandle>;
};
Expand Down Expand Up @@ -150,10 +154,12 @@ function MagicCodeInput({
autoComplete,
hasError = false,
testID = '',
accessibilityLabel,
ref,
}: MagicCodeInputProps) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const {translate} = useLocalize();
const inputRef = useRef<BaseTextInputRef | null>(null);
const [input, setInput] = useState(TEXT_INPUT_EMPTY_STATE);
const [focusedIndex, setFocusedIndex] = useState<number | undefined>(autoFocus ? 0 : undefined);
Expand Down Expand Up @@ -486,7 +492,7 @@ function MagicCodeInput({
}}
selectionColor="transparent"
inputStyle={[styles.inputTransparent]}
role={CONST.ROLE.PRESENTATION}
accessibilityLabel={`${accessibilityLabel ?? translate('common.magicCode')}, ${maxLength} ${translate('common.digits')}`}
style={[styles.inputTransparent]}
textInputContainerStyles={[styles.borderTransparent, styles.bgTransparent]}
testID={testID}
Expand Down
3 changes: 2 additions & 1 deletion src/components/MoneyRequestAmountInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ function MoneyRequestAmountInput({
disabled,
...props
}: MoneyRequestAmountInputProps) {
const {preferredLocale} = useLocalize();
const {preferredLocale, translate} = useLocalize();
const textInput = useRef<BaseTextInputRef | null>(null);
const numberFormRef = useRef<NumberWithSymbolFormRef | null>(null);
const decimals = getCurrencyDecimals(currency);
Expand Down Expand Up @@ -258,6 +258,7 @@ function MoneyRequestAmountInput({
toggleNegative={toggleNegative}
clearNegative={clearNegative}
onFocus={props.onFocus}
accessibilityLabel={`${translate('iou.amount')} (${currency})`}
/>
);
}
Expand Down
1 change: 1 addition & 0 deletions src/components/NumberWithSymbolForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,7 @@ function NumberWithSymbolForm({
isNegative={isNegative}
toggleNegative={toggleNegative}
onFocus={props.onFocus}
accessibilityLabel={props.accessibilityLabel}
/>
);

Expand Down
2 changes: 1 addition & 1 deletion src/components/ReferralProgramCTA.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import ROUTES from '@src/ROUTES';
import {getButtonRole} from './Button/utils';
import Icon from './Icon';
import {Close} from './Icon/Expensicons';

Check warning on line 12 in src/components/ReferralProgramCTA.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'./Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import {PressableWithoutFeedback} from './Pressable';
import RenderHTML from './RenderHTML';
import Tooltip from './Tooltip';
Expand Down Expand Up @@ -51,7 +51,7 @@
}}
style={[styles.br2, styles.highlightBG, styles.flexRow, styles.justifyContentBetween, styles.alignItemsCenter, {gap: 10, padding: 10}, styles.pl5, style]}
isNested
accessibilityLabel="referral"
accessibilityLabel={translate(`referralProgram.${referralContentType}.header`)}
role={getButtonRole(true)}
>
<RenderHTML html={translate(`referralProgram.${referralContentType}.buttonText`)} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import Button from '@components/Button';
import PopoverMenu from '@components/PopoverMenu';
import type {SearchQueryJSON} from '@components/Search/types';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
import useSafeAreaPaddings from '@hooks/useSafeAreaPaddings';
import useSearchTypeMenu from '@hooks/useSearchTypeMenu';
import useThemeStyles from '@hooks/useThemeStyles';
Expand All @@ -13,6 +14,7 @@ type SearchTypeMenuNarrowProps = {

function SearchTypeMenuPopover({queryJSON}: SearchTypeMenuNarrowProps) {
const styles = useThemeStyles();
const {translate} = useLocalize();
const {isPopoverVisible, delayPopoverMenuFirstRender, openMenu, closeMenu, allMenuItems, DeleteConfirmModal, windowHeight} = useSearchTypeMenu(queryJSON);

const buttonRef = useRef<HTMLDivElement>(null);
Expand All @@ -25,6 +27,7 @@ function SearchTypeMenuPopover({queryJSON}: SearchTypeMenuNarrowProps) {
<Button
icon={expensifyIcons.Menu}
onPress={openMenu}
accessibilityLabel={translate('search.filtersHeader')}
/>
{!delayPopoverMenuFirstRender && (
<PopoverMenu
Expand Down
5 changes: 4 additions & 1 deletion src/components/SelectionListWithSections/BaseListItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ function BaseListItem<TItem extends ListItem>({
return rightHandSideComponent;
};

const defaultAccessibilityLabel = item.text === item.alternateText ? (item.text ?? '') : [item.text, item.alternateText].filter(Boolean).join(', ');
const accessibilityLabel = item.accessibilityLabel ?? defaultAccessibilityLabel;

return (
<OfflineWithFeedback
onClose={() => onDismissError(item)}
Expand Down Expand Up @@ -107,7 +110,7 @@ function BaseListItem<TItem extends ListItem>({
}}
disabled={isDisabled && !item.isSelected}
interactive={item.isInteractive}
accessibilityLabel={[item.text, item.text !== item.alternateText ? item.alternateText : undefined].filter(Boolean).join(', ')}
accessibilityLabel={accessibilityLabel}
role={getButtonRole(true)}
isNested
hoverDimmingValue={1}
Expand Down
3 changes: 3 additions & 0 deletions src/components/SelectionListWithSections/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@ type ListItem<K extends string | number = string> = {
/** Text to display */
text?: string;

/** Text to be announced by screen reader */
accessibilityLabel?: string;

/** Alternate text to display */
alternateText?: string | null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import Checkbox from '@components/Checkbox';
import FormHelpMessage from '@components/FormHelpMessage';
import Icon from '@components/Icon';
import * as Expensicons from '@components/Icon/Expensicons';

Check warning on line 10 in src/components/TextInput/BaseTextInput/implementation/index.native.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details

Check warning on line 10 in src/components/TextInput/BaseTextInput/implementation/index.native.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used. Direct imports from @components/Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
import type {AnimatedMarkdownTextInputRef} from '@components/RNMarkdownTextInput';
import type {AnimatedTextInputRef} from '@components/RNTextInput';
Expand Down Expand Up @@ -280,6 +280,7 @@

// Height fix is needed only for Text single line inputs
const shouldApplyHeight = !shouldUseFullInputHeight && !isMultiline && !isMarkdownEnabled;
const accessibilityLabel = [label, hint].filter(Boolean).join(', ');
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const accessibilityLabel = [label, hint].filter(Boolean).join(', ');
const accessibilityLabel = buildAccessibilityLabel(label, hint);

Can we create a shared utility function for this? For example:

function buildAccessibilityLabel(...parts: Array<string | undefined>) {
    return parts.filter(Boolean).join(', ');
}

I see this logic is used in two places with the same implementation, so it would be better to extract it into a utility function.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i don't think we should. this function is clearer without it


return (
<>
Expand All @@ -291,7 +292,7 @@
// When autoGrowHeight is true we calculate the width for the text input, so it will break lines properly
// or if multiline is not supplied we calculate the text input height, using onLayout.
onLayout={onLayout}
accessibilityLabel={label}
accessibilityLabel={accessibilityLabel}
style={[
autoGrowHeight &&
!isAutoGrowHeightMarkdown &&
Expand Down Expand Up @@ -367,6 +368,7 @@
}}
// eslint-disable-next-line
{...inputProps}
accessibilityLabel={inputProps.accessibilityLabel ?? accessibilityLabel}
autoCorrect={inputProps.secureTextEntry ? false : autoCorrect}
placeholder={placeholderValue}
placeholderTextColor={placeholderTextColor ?? theme.placeholderText}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ function BaseTextInput({
// This is workaround for https://github.com/Expensify/App/issues/47939: in case when user is using Chrome on Android we set inputMode to 'search' to disable autocomplete bar above the keyboard.
// If we need some other inputMode (eg. 'decimal'), then the autocomplete bar will show, but we can do nothing about it as it's a known Chrome bug.
const inputMode = inputProps.inputMode ?? (isMobileChrome() ? 'search' : undefined);
const accessibilityLabel = [label, hint].filter(Boolean).join(', ');
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return (
<>
<View
Expand All @@ -300,7 +301,7 @@ function BaseTextInput({
role={CONST.ROLE.PRESENTATION}
onPress={onPress}
tabIndex={-1}
accessibilityLabel={label}
accessibilityLabel={accessibilityLabel}
// When autoGrowHeight is true we calculate the width for the text input, so it will break lines properly
// or if multiline is not supplied we calculate the text input height, using onLayout.
onLayout={onLayout}
Expand Down Expand Up @@ -447,6 +448,7 @@ function BaseTextInput({
readOnly={isReadOnly}
defaultValue={defaultValue}
markdownStyle={markdownStyle}
accessibilityLabel={inputProps.accessibilityLabel}
/>
{!!suffixCharacter && (
<View style={[styles.textInputSuffixWrapper, suffixContainerStyle]}>
Expand Down
1 change: 1 addition & 0 deletions src/components/TextInputWithSymbol/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ type BaseTextInputWithSymbolProps = {
| 'onBlur'
| 'disabled'
| 'ref'
| 'accessibilityLabel'
>;

type TextInputWithSymbolProps = Omit<BaseTextInputWithSymbolProps, 'onSelectionChange'> & {
Expand Down
1 change: 1 addition & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Passwort',
magicCode: 'Magischer Code',
digits: 'Ziffern',
twoFactorCode: 'Zwei-Faktor-Code',
workspaces: 'Arbeitsbereiche',
inbox: 'Posteingang',
Expand Down
1 change: 1 addition & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ const translations = {
zoom: 'Zoom',
password: 'Password',
magicCode: 'Magic code',
digits: 'digits',
twoFactorCode: 'Two-factor code',
workspaces: 'Workspaces',
inbox: 'Inbox',
Expand Down
1 change: 1 addition & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Contraseña',
magicCode: 'Código mágico',
digits: 'dígitos',
twoFactorCode: 'Autenticación de dos factores',
workspaces: 'Espacios de trabajo',
inbox: 'Recibidos',
Expand Down
1 change: 1 addition & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Mot de passe',
magicCode: 'Code magique',
digits: 'chiffres',
twoFactorCode: 'Code à deux facteurs',
workspaces: 'Espaces de travail',
inbox: 'Boîte de réception',
Expand Down
1 change: 1 addition & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Password',
magicCode: 'Codice magico',
digits: 'cifre',
twoFactorCode: 'Codice di verifica in due passaggi',
workspaces: 'Workspace',
inbox: 'Posta in arrivo',
Expand Down
1 change: 1 addition & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'パスワード',
magicCode: 'マジックコード',
digits: '桁',
twoFactorCode: '2要素コード',
workspaces: 'ワークスペース',
inbox: '受信トレイ',
Expand Down
1 change: 1 addition & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Wachtwoord',
magicCode: 'Magische code',
digits: 'cijfers',
twoFactorCode: 'Tweeledige code',
workspaces: 'Werkruimtes',
inbox: 'Inbox',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Hasło',
magicCode: 'Kod magiczny',
digits: 'cyfr',
twoFactorCode: 'Kod dwuskładnikowy',
workspaces: 'Przestrzenie robocze',
inbox: 'Skrzynka odbiorcza',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: 'Senha',
magicCode: 'Código mágico',
digits: 'dígitos',
twoFactorCode: 'Código de autenticação de dois fatores',
workspaces: 'Workspaces',
inbox: 'Caixa de entrada',
Expand Down
1 change: 1 addition & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const translations: TranslationDeepObject<typeof en> = {
zoom: 'Zoom',
password: '密码',
magicCode: '魔法代码',
digits: '位数字',
twoFactorCode: '双重验证代码',
workspaces: '工作区',
inbox: '收件箱',
Expand Down
2 changes: 1 addition & 1 deletion src/pages/home/sidebar/NavigationTabBarAvatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function NavigationTabBarAvatar({onPress, isSelected = false, style}: Navigation
<PressableWithFeedback
onPress={onPress}
role={CONST.ROLE.BUTTON}
accessibilityLabel={translate('sidebarScreen.buttonMySettings')}
accessibilityLabel={`${translate('initialSettingsPage.account')}, ${translate('sidebarScreen.buttonMySettings')}`}
wrapperStyle={styles.flex1}
style={({hovered}) => [style, hovered && styles.navigationTabBarItemHovered]}
sentryLabel={CONST.SENTRY_LABEL.NAVIGATION_TAB_BAR.ACCOUNT}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ function IOURequestStepDistanceManual({
autoGrowExtraSpace={variables.w80}
touchableInputWrapperStyle={styles.heightUndefined}
errorText={formError}
accessibilityLabel={`${translate('common.distance')} (${translate(`common.${unit}`)})`}
footer={
<Button
success
Expand Down
Loading
Loading