From 9b8a86512c06a250109d742a1a468d3fdbd988d4 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 15:26:12 -0700 Subject: [PATCH 1/2] Code snippet for Compose doc at https://developer.android.com/quick-guides/content/show-hide-password?hl=en (show/hide password based on user toggle). Snippet builds as-is from DAC page. --- .../compose/snippets/text/TextSnippets.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 75321bb8..57fbd99f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.border +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -32,6 +33,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField @@ -839,3 +844,35 @@ private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) + +// [START android_compose_text_auto_format_phone_number_showhidepassword] +@Composable +fun PasswordTextField() { + var password by rememberSaveable { mutableStateOf("") } + var showPassword by remember { mutableStateOf(false) } + val passwordVisualTransformation = remember { PasswordVisualTransformation() } + + TextField( + value = password, + onValueChange = { password = it }, + label = { Text("Enter password") }, + visualTransformation = if (showPassword) { + VisualTransformation.None + } else { + passwordVisualTransformation + }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + modifier = Modifier.fillMaxWidth(), + trailingIcon = { + Icon( + if (showPassword) { + Icons.Filled.Visibility + } else { + Icons.Filled.VisibilityOff + }, + contentDescription = "Toggle password visibility", + modifier = Modifier.clickable { showPassword = !showPassword }) + } + ) +} +// [END android_compose_text_auto_format_phone_number_showhidepassword] \ No newline at end of file From 70989225da1ea66bf0ba9c354c9cc1f713e1edf2 Mon Sep 17 00:00:00 2001 From: thedmail Date: Mon, 16 Sep 2024 22:29:16 +0000 Subject: [PATCH 2/2] Apply Spotless --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 57fbd99f..6b8d7c37 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -871,8 +871,9 @@ fun PasswordTextField() { Icons.Filled.VisibilityOff }, contentDescription = "Toggle password visibility", - modifier = Modifier.clickable { showPassword = !showPassword }) + modifier = Modifier.clickable { showPassword = !showPassword } + ) } ) } -// [END android_compose_text_auto_format_phone_number_showhidepassword] \ No newline at end of file +// [END android_compose_text_auto_format_phone_number_showhidepassword]