Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Email
import androidx.compose.material.icons.filled.Lock
Expand Down Expand Up @@ -104,6 +106,22 @@ fun AuthTextField(
) {
var passwordVisible by remember { mutableStateOf(false) }

// Automatically set the correct keyboard type based on validator or field type
val resolvedKeyboardOptions = remember(validator, isSecureTextField, keyboardOptions) {
when {
keyboardOptions != KeyboardOptions.Default -> keyboardOptions
validator is EmailValidator -> KeyboardOptions(
keyboardType = KeyboardType.Email,
imeAction = ImeAction.Next
)
isSecureTextField -> KeyboardOptions(
keyboardType = KeyboardType.Password,
imeAction = ImeAction.Done
)
else -> keyboardOptions
}
}

TextField(
modifier = modifier
.fillMaxWidth(),
Expand All @@ -121,7 +139,7 @@ fun AuthTextField(
Text(text = errorMessage ?: validator.errorMessage)
}
},
keyboardOptions = keyboardOptions,
keyboardOptions = resolvedKeyboardOptions,
keyboardActions = keyboardActions,
visualTransformation = if (isSecureTextField && !passwordVisible)
PasswordVisualTransformation() else visualTransformation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.firebase.ui.auth.compose.configuration.string_provider.LocalAuthUIStringProvider
Expand Down Expand Up @@ -109,6 +111,7 @@ fun CountrySelector(
}
.padding(start = 8.dp)
.semantics {
role = Role.DropdownList
contentDescription = "Country selector"
},
verticalAlignment = Alignment.CenterVertically,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fun QrCodeImage(
bitmap?.let {
Image(
bitmap = it.asImageBitmap(),
contentDescription = "QR Code for $content",
contentDescription = "QR code for authenticator app setup",
modifier = Modifier.size(size)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role
import androidx.compose.ui.semantics.semantics
import androidx.core.text.isDigitsOnly
import com.firebase.ui.auth.compose.configuration.theme.AuthUITheme
import com.firebase.ui.auth.compose.configuration.validators.FieldValidator
Expand Down Expand Up @@ -248,6 +252,9 @@ private fun SingleDigitField(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
.semantics {
contentDescription = "Verification code digit"
}
.focusRequester(focusRequester)
.onFocusChanged {
isFocused.value = it.isFocused
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
Expand Down Expand Up @@ -123,12 +126,17 @@ fun SignInUI(
}
}

val layoutDirection = LocalLayoutDirection.current

Scaffold(
modifier = modifier,
topBar = {
TopAppBar(
title = {
Text(stringProvider.signInDefault)
Text(
text = stringProvider.signInDefault,
modifier = Modifier.semantics { heading() }
)
},
colors = AuthUITheme.topAppBarColors
)
Expand Down
35 changes: 35 additions & 0 deletions auth/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,39 @@
<string name="fui_mfa_error_invalid_verification_code" translation_description="Error message when MFA enrollment fails due to invalid verification code">رمز التحقق غير صحيح. يُرجى المحاولة مرة أخرى.</string>
<string name="fui_mfa_error_network" translation_description="Error message when MFA enrollment fails due to network issues">حدث خطأ في الشبكة. يُرجى التحقق من اتصالك والمحاولة مرة أخرى.</string>
<string name="fui_mfa_error_generic" translation_description="Generic error message for MFA enrollment failures">حدث خطأ أثناء التسجيل. يُرجى المحاولة مرة أخرى.</string>

<string name="fui_back_action">رجوع</string>
<string name="fui_identity_verified_message">تم التحقق من الهوية. أعد المحاولة.</string>
<string name="fui_manage_mfa_action">إدارة المصادقة الثنائية</string>
<string name="fui_incorrect_password_error">كلمة المرور غير صحيحة</string>
<string name="fui_mfa_choose_method_instruction">اختر طريقة التحقق</string>
<string name="fui_mfa_enrollment_instruction">أضف طبقة أمان إضافية</string>
<string name="fui_mfa_method_sms">رسالة نصية</string>
<string name="fui_mfa_method_totp">تطبيق المصادقة</string>
<string name="fui_mfa_phone_number_already_exists_error">رقم الهاتف هذا مرتبط بحساب آخر</string>
<string name="fui_mfa_second_factor_required_error">التحقق مطلوب</string>
<string name="fui_mfa_setup_instruction">امسح رمز الاستجابة السريعة باستخدام تطبيق المصادقة</string>
<string name="fui_mfa_totp_already_exists_error">تطبيق المصادقة معد بالفعل</string>
<string name="fui_mfa_unenrollment_confirmation_message">هل أنت متأكد من إزالة طريقة التحقق هذه؟</string>
<string name="fui_mfa_unenrollment_error">تعذرت إزالة طريقة التحقق</string>
<string name="fui_mfa_unenrollment_success_message">تمت إزالة طريقة التحقق</string>
<string name="fui_mfa_verification_instruction">أدخل رمز التحقق</string>
<string name="fui_profile_update_error">تعذر تحديث الملف الشخصي</string>
<string name="fui_profile_update_success_message">تم تحديث الملف الشخصي</string>
<string name="fui_reauth_instruction">أكد هويتك للمتابعة</string>
<string name="fui_reauth_required_error">إعادة المصادقة مطلوبة</string>
<string name="fui_reauth_success_message">نجحت إعادة المصادقة</string>
<string name="fui_reauthenticate_action">إعادة المصادقة</string>
<string name="fui_recovery_codes_saved_action">حفظت رموز الاسترداد</string>
<string name="fui_remove_action">إزالة</string>
<string name="fui_resend_verification_email_action">إعادة إرسال بريد التحقق</string>
<string name="fui_secret_key_label">المفتاح السري</string>
<string name="fui_sign_out_action">تسجيل الخروج</string>
<string name="fui_signed_in_as">مسجل الدخول باسم</string>
<string name="fui_skip_action">تخطي</string>
<string name="fui_use_different_method_action">استخدم طريقة أخرى</string>
<string name="fui_verification_code_label">رمز التحقق</string>
<string name="fui_verified_email_action">البريد الإلكتروني محقق</string>
<string name="fui_verify_action">تحقق</string>
<string name="fui_verify_email_instruction">أرسلنا بريدًا للتحقق إلى %1$s</string>
</resources>
53 changes: 53 additions & 0 deletions auth/src/main/res/values-b+es+419/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,57 @@
<string name="fui_mfa_error_invalid_verification_code" translation_description="Error message when MFA enrollment fails due to invalid verification code">El código de verificación es incorrecto. Inténtalo de nuevo.</string>
<string name="fui_mfa_error_network" translation_description="Error message when MFA enrollment fails due to network issues">Se produjo un error de red. Verifica tu conexión e inténtalo de nuevo.</string>
<string name="fui_mfa_error_generic" translation_description="Generic error message for MFA enrollment failures">Se produjo un error durante la inscripción. Inténtalo de nuevo.</string>

<!-- MFA and Account Management - Added for v10 -->
<string name="fui_back_action">Atrás</string>
<string name="fui_identity_verified_message">Identidad verificada. Vuelve a intentar tu acción.</string>
<string name="fui_incorrect_password_error">Contraseña incorrecta. Inténtalo de nuevo.</string>
<string name="fui_manage_mfa_action">Administrar autenticación multifactor</string>
<string name="fui_mfa_active_methods_title">Métodos activos</string>
<string name="fui_mfa_add_new_method_title">Agregar nuevo método</string>
<string name="fui_mfa_all_methods_enrolled_message">Todos los métodos de autenticación disponibles están registrados</string>
<string name="fui_mfa_enrolled_on">Registrado el %1$s</string>
<string name="fui_mfa_label_sms_authentication">Autenticación por SMS</string>
<string name="fui_mfa_label_totp_authentication">Aplicación de autenticación</string>
<string name="fui_mfa_label_unknown_method">Método desconocido</string>
<string name="fui_mfa_manage_factors_description">Agregar o eliminar métodos de autenticación para tu cuenta</string>
<string name="fui_mfa_manage_factors_title">Administrar autenticación de dos factores</string>
<string name="fui_mfa_setup_authenticator_description">Escanea el código QR o ingresa la clave secreta en tu aplicación de autenticación</string>
<string name="fui_profile_completion_message">Completa tu información de perfil para continuar.</string>
<string name="fui_profile_missing_fields_message">Campos faltantes: %1$s</string>
<string name="fui_reauth_account_label">Cuenta: %1$s</string>
<string name="fui_reauth_dialog_message">Por tu seguridad, vuelve a ingresar tu contraseña para continuar.</string>
<string name="fui_reauth_dialog_title">Verifica tu identidad</string>
<string name="fui_reauth_generic_error">Error de autenticación. Inténtalo de nuevo.</string>
<string name="fui_recovery_codes_saved_action">He guardado estos códigos</string>
<string name="fui_remove_action">Eliminar</string>
<string name="fui_resend_verification_email_action">Reenviar correo de verificación</string>
<string name="fui_secret_key_label">Clave secreta</string>
<string name="fui_sign_out_action">Cerrar sesión</string>
<string name="fui_signed_in_as">Sesión iniciada como %1$s</string>
<string name="fui_skip_action">Omitir por ahora</string>
<string name="fui_use_different_method_action">Usar un método diferente</string>
<string name="fui_verification_code_label">Código de verificación</string>
<string name="fui_verified_email_action">He verificado mi correo electrónico</string>
<string name="fui_verify_action">Verificar</string>
<string name="fui_verify_email_instruction">Verifica %1$s para continuar.</string>

<string name="fui_mfa_choose_method_instruction">Elige un método de verificación</string>
<string name="fui_mfa_enrollment_instruction">Agrega una capa adicional de seguridad</string>
<string name="fui_mfa_method_sms">SMS</string>
<string name="fui_mfa_method_totp">Aplicación de autenticación</string>
<string name="fui_mfa_phone_number_already_exists_error">Este número de teléfono está asociado con otra cuenta</string>
<string name="fui_mfa_second_factor_required_error">Verificación requerida</string>
<string name="fui_mfa_setup_instruction">Escanea el código QR con tu aplicación de autenticación</string>
<string name="fui_mfa_totp_already_exists_error">La aplicación de autenticación ya está configurada</string>
<string name="fui_mfa_unenrollment_confirmation_message">¿Estás seguro de que quieres eliminar este método?</string>
<string name="fui_mfa_unenrollment_error">No se puede eliminar el método</string>
<string name="fui_mfa_unenrollment_success_message">Método eliminado</string>
<string name="fui_mfa_verification_instruction">Ingresa el código de verificación</string>
<string name="fui_profile_update_error">No se puede actualizar el perfil</string>
<string name="fui_profile_update_success_message">Perfil actualizado</string>
<string name="fui_reauth_instruction">Confirma tu identidad para continuar</string>
<string name="fui_reauth_required_error">Se requiere reautenticación</string>
<string name="fui_reauth_success_message">Reautenticación exitosa</string>
<string name="fui_reauthenticate_action">Reautenticar</string>
</resources>
35 changes: 35 additions & 0 deletions auth/src/main/res/values-bg/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,39 @@
<string name="fui_mfa_error_invalid_verification_code" translation_description="Error message when MFA enrollment fails due to invalid verification code">Кодът за потвърждение е неправилен. Моля, опитайте отново.</string>
<string name="fui_mfa_error_network" translation_description="Error message when MFA enrollment fails due to network issues">Възникна мрежова грешка. Моля, проверете връзката си и опитайте отново.</string>
<string name="fui_mfa_error_generic" translation_description="Generic error message for MFA enrollment failures">Възникна грешка по време на регистрацията. Моля, опитайте отново.</string>

<string name="fui_back_action">Назад</string>
<string name="fui_identity_verified_message">Самоличността е потвърдена. Опитайте отново действието си.</string>
<string name="fui_manage_mfa_action">Управление на двуфакторно удостоверяване</string>
<string name="fui_incorrect_password_error">Неправилна парола</string>
<string name="fui_mfa_choose_method_instruction">Изберете метод за потвърждение</string>
<string name="fui_mfa_enrollment_instruction">Добавете допълнително ниво на сигурност</string>
<string name="fui_mfa_method_sms">SMS</string>
<string name="fui_mfa_method_totp">Приложение за удостоверяване</string>
<string name="fui_mfa_phone_number_already_exists_error">Този телефонен номер е свързан с друг акаунт</string>
<string name="fui_mfa_second_factor_required_error">Необходимо е потвърждение</string>
<string name="fui_mfa_setup_instruction">Сканирайте QR кода с приложението си за удостоверяване</string>
<string name="fui_mfa_totp_already_exists_error">Приложението за удостоверяване вече е настроено</string>
<string name="fui_mfa_unenrollment_confirmation_message">Сигурни ли сте, че искате да премахнете този метод?</string>
<string name="fui_mfa_unenrollment_error">Методът не може да бъде премахнат</string>
<string name="fui_mfa_unenrollment_success_message">Методът е премахнат</string>
<string name="fui_mfa_verification_instruction">Въведете кода за потвърждение</string>
<string name="fui_profile_update_error">Профилът не може да бъде актуализиран</string>
<string name="fui_profile_update_success_message">Профилът е актуализиран</string>
<string name="fui_reauth_instruction">Потвърдете самоличността си, за да продължите</string>
<string name="fui_reauth_required_error">Необходимо е повторно удостоверяване</string>
<string name="fui_reauth_success_message">Повторното удостоверяване е успешно</string>
<string name="fui_reauthenticate_action">Повторно удостоверяване</string>
<string name="fui_recovery_codes_saved_action">Запазих кодовете за възстановяване</string>
<string name="fui_remove_action">Премахване</string>
<string name="fui_resend_verification_email_action">Изпращане на имейл за потвърждение отново</string>
<string name="fui_secret_key_label">Таен ключ</string>
<string name="fui_sign_out_action">Изход</string>
<string name="fui_signed_in_as">Влезли сте като</string>
<string name="fui_skip_action">Пропускане</string>
<string name="fui_use_different_method_action">Използване на друг метод</string>
<string name="fui_verification_code_label">Код за потвърждение</string>
<string name="fui_verified_email_action">Имейлът е потвърден</string>
<string name="fui_verify_action">Потвърждаване</string>
<string name="fui_verify_email_instruction">Изпратихме имейл за потвърждение до %1$s</string>
</resources>
Loading
Loading