|
|
|
@ -6,15 +6,18 @@ import androidx.compose.foundation.layout.*
@@ -6,15 +6,18 @@ import androidx.compose.foundation.layout.*
|
|
|
|
|
import androidx.compose.foundation.rememberScrollState |
|
|
|
|
import androidx.compose.foundation.text.KeyboardOptions |
|
|
|
|
import androidx.compose.foundation.verticalScroll |
|
|
|
|
import androidx.compose.material.icons.Icons |
|
|
|
|
import androidx.compose.material.icons.filled.Visibility |
|
|
|
|
import androidx.compose.material.icons.filled.VisibilityOff |
|
|
|
|
import androidx.compose.material3.* |
|
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
|
import androidx.compose.runtime.LaunchedEffect |
|
|
|
|
import androidx.compose.runtime.getValue |
|
|
|
|
import androidx.compose.runtime.* |
|
|
|
|
import androidx.compose.ui.Alignment |
|
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
|
import androidx.compose.ui.text.font.FontWeight |
|
|
|
|
import androidx.compose.ui.text.input.ImeAction |
|
|
|
|
import androidx.compose.ui.text.input.KeyboardType |
|
|
|
|
import androidx.compose.ui.text.input.PasswordVisualTransformation |
|
|
|
|
import androidx.compose.ui.text.input.VisualTransformation |
|
|
|
|
import androidx.compose.ui.text.style.TextAlign |
|
|
|
|
import androidx.compose.ui.tooling.preview.Preview |
|
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
@ -125,6 +128,11 @@ fun LoginContent(
@@ -125,6 +128,11 @@ fun LoginContent(
|
|
|
|
|
keyboardType = KeyboardType.Text, |
|
|
|
|
), |
|
|
|
|
) |
|
|
|
|
var passwordVisible by remember { mutableStateOf(false) } |
|
|
|
|
if (state.isLoggedIn is Loading) { |
|
|
|
|
// Ensure password is hidden when user submits the form |
|
|
|
|
passwordVisible = false |
|
|
|
|
} |
|
|
|
|
OutlinedTextField( |
|
|
|
|
value = state.password, |
|
|
|
|
modifier = Modifier |
|
|
|
@ -135,6 +143,17 @@ fun LoginContent(
@@ -135,6 +143,17 @@ fun LoginContent(
|
|
|
|
|
Text(text = "Password") |
|
|
|
|
}, |
|
|
|
|
isError = isError, |
|
|
|
|
visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), |
|
|
|
|
trailingIcon = { |
|
|
|
|
val image = |
|
|
|
|
if (passwordVisible) Icons.Filled.Visibility else Icons.Filled.VisibilityOff |
|
|
|
|
val description = |
|
|
|
|
if (passwordVisible) "Hide password" else "Show password" |
|
|
|
|
|
|
|
|
|
IconButton(onClick = { passwordVisible = !passwordVisible }) { |
|
|
|
|
Icon(imageVector = image, description) |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
keyboardOptions = KeyboardOptions( |
|
|
|
|
keyboardType = KeyboardType.Password, |
|
|
|
|
imeAction = ImeAction.Send, |
|
|
|
|