From 4b2fcee460185a397a9480dbca2d872c3169aaac Mon Sep 17 00:00:00 2001 From: Uruk Date: Mon, 1 Sep 2025 23:19:12 +0200 Subject: [PATCH] feat: add accessibility support for password toggle Enhances password input component with proper accessibility attributes including role, label, hint, and state to improve screen reader experience. Adjusts minimum height handling for Android platform compatibility in list items and replaces Tailwind classes with inline styles for gesture control settings to ensure consistent styling across platforms. Adds translation keys for password visibility toggle functionality. --- components/PasswordInput.tsx | 9 +++++++++ components/list/ListItem.tsx | 14 +++++++------- components/settings/GestureControls.tsx | 6 +++--- translations/en.json | 5 ++++- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/components/PasswordInput.tsx b/components/PasswordInput.tsx index ab4e4c0a..62c16583 100644 --- a/components/PasswordInput.tsx +++ b/components/PasswordInput.tsx @@ -1,6 +1,7 @@ import { Ionicons } from "@expo/vector-icons"; import type React from "react"; import { useState } from "react"; +import { useTranslation } from "react-i18next"; import { TouchableOpacity } from "react-native"; import { Input } from "./common/Input"; @@ -31,6 +32,7 @@ type PasswordInputProps = | PasswordVisibilityUncontrolled; export const PasswordInput: React.FC = (props) => { + const { t } = useTranslation(); const { value = "", onChangeText, @@ -90,6 +92,13 @@ export const PasswordInput: React.FC = (props) => { layout === "tv" ? "h-10 justify-center" : "" }`} style={getTopStyle()} + accessible={true} + accessibilityRole='button' + accessibilityLabel={ + showPassword ? t("login.hide_password") : t("login.show_password") + } + accessibilityHint={t("login.toggle_password_visibility")} + accessibilityState={{ checked: showPassword }} > > = ({ > = ({ ); return ( = ({ ...props }) => { "home.settings.gesture_controls.horizontal_swipe_skip_description", )} disabled={pluginSettings?.enableHorizontalSwipeSkip?.locked} - className='min-h-[72px] py-3' + style={{ minHeight: 72, paddingTop: 12, paddingBottom: 12 }} > = ({ ...props }) => { "home.settings.gesture_controls.left_side_brightness_description", )} disabled={pluginSettings?.enableLeftSideBrightnessSwipe?.locked} - className='min-h-[72px] py-3' + style={{ minHeight: 72, paddingTop: 12, paddingBottom: 12 }} > = ({ ...props }) => { "home.settings.gesture_controls.right_side_volume_description", )} disabled={pluginSettings?.enableRightSideVolumeSwipe?.locked} - className='min-h-[72px] py-3' + style={{ minHeight: 72, paddingTop: 12, paddingBottom: 12 }} >