From 66bdb88b058b873f19f9e24807ad2f6ffd28d0f0 Mon Sep 17 00:00:00 2001 From: "Z. Charles Dziura" Date: Mon, 19 Aug 2024 10:08:14 -0400 Subject: [PATCH] Add a bit more padding between form and login button --- .../debtpirate/usecases/login/LoginForm.kt | 103 ++++++++++++++++++ .../debtpirate/usecases/login/LoginScreen.kt | 92 ---------------- app/app/src/main/res/values/strings.xml | 2 +- 3 files changed, 104 insertions(+), 93 deletions(-) create mode 100644 app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginForm.kt diff --git a/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginForm.kt b/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginForm.kt new file mode 100644 index 0000000..c37e000 --- /dev/null +++ b/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginForm.kt @@ -0,0 +1,103 @@ +package software.makeshift.debtpirate.usecases.login + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.LinkAnnotation +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardCapitalization +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.withLink +import androidx.compose.ui.unit.dp +import software.makeshift.debtpirate.R + +@Composable +fun LoginForm( + state: LoginState, + onUsernameUpdate: (String) -> Unit, + onPasswordUpdate: (String) -> Unit +) { + val (username, password) = state + + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + ) { + OutlinedTextField( + value = username, + label = { Text(stringResource(id = R.string.login_screen__username)) }, + placeholder = { Text(stringResource(id = R.string.login_screen__username)) }, + leadingIcon = { Icon(Icons.Outlined.Person, "person") }, + singleLine = true, + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.Unspecified, + keyboardType = KeyboardType.Email, + imeAction = ImeAction.Next + ), + onValueChange = onUsernameUpdate, + modifier = Modifier.fillMaxWidth() + ) + + OutlinedTextField( + value = password, + label = { Text(stringResource(id = R.string.login_screen__password)) }, + placeholder = { Text(stringResource(id = R.string.login_screen__password)) }, + leadingIcon = { Icon(Icons.Outlined.Lock, "password") }, + singleLine = true, + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.Unspecified, + keyboardType = KeyboardType.Password, + imeAction = ImeAction.Send + ), + visualTransformation = PasswordVisualTransformation(), + onValueChange = onPasswordUpdate, + modifier = Modifier + .fillMaxWidth() + .padding(PaddingValues(top = 8.dp)) + ) + + Text( + text = buildAnnotatedString { + withLink( + LinkAnnotation.Url( + "", TextLinkStyles( + style = SpanStyle( + color = Color.Gray + ) + ) + ) + ) { + append(stringResource(id = R.string.login_screen__forgot_password)) + } + }, + modifier = Modifier.padding(PaddingValues(top = 16.dp)) + ) + Button( + onClick = { /*TODO*/ }, + modifier = Modifier + .padding(PaddingValues(top = 32.dp)) + .fillMaxWidth() + ) { + Text(stringResource(id = R.string.login_screen__login)) + } + } +} \ No newline at end of file diff --git a/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginScreen.kt b/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginScreen.kt index 03246cf..9762a9e 100644 --- a/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginScreen.kt +++ b/app/app/src/main/java/software/makeshift/debtpirate/usecases/login/LoginScreen.kt @@ -6,23 +6,14 @@ import android.annotation.SuppressLint import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.Person -import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SecondaryTabRow import androidx.compose.material3.Tab @@ -32,15 +23,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.LinkAnnotation -import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.TextLinkStyles -import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardCapitalization -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.text.withLink import androidx.compose.ui.unit.dp import software.makeshift.debtpirate.R @@ -131,78 +113,4 @@ private fun LoginAndSignUpForms( } } } -} - -@Composable -private fun LoginForm( - state: LoginState, - onUsernameUpdate: (String) -> Unit, - onPasswordUpdate: (String) -> Unit -) { - val (username, password) = state - - Column( - modifier = Modifier - .padding(16.dp) - .fillMaxSize() - ) { - OutlinedTextField( - value = username, - label = { Text(stringResource(id = R.string.login_screen__username)) }, - placeholder = { Text(stringResource(id = R.string.login_screen__username)) }, - leadingIcon = { Icon(Icons.Outlined.Person, "person") }, - singleLine = true, - keyboardOptions = KeyboardOptions( - capitalization = KeyboardCapitalization.Unspecified, - keyboardType = KeyboardType.Email, - imeAction = ImeAction.Next - ), - onValueChange = onUsernameUpdate, - modifier = Modifier.fillMaxWidth() - ) - - OutlinedTextField( - value = password, - label = { Text(stringResource(id = R.string.login_screen__password)) }, - placeholder = { Text(stringResource(id = R.string.login_screen__password)) }, - leadingIcon = { Icon(Icons.Outlined.Lock, "password") }, - singleLine = true, - keyboardOptions = KeyboardOptions( - capitalization = KeyboardCapitalization.Unspecified, - keyboardType = KeyboardType.Password, - imeAction = ImeAction.Send - ), - visualTransformation = PasswordVisualTransformation(), - onValueChange = onPasswordUpdate, - modifier = Modifier - .fillMaxWidth() - .padding(PaddingValues(top = 8.dp)) - ) - - Text( - text = buildAnnotatedString { - withLink( - LinkAnnotation.Url( - "", TextLinkStyles( - style = SpanStyle( - color = Color.Blue - ) - ) - ) - ) { - append(stringResource(id = R.string.login_screen__forgot_password)) - } - }, - modifier = Modifier.padding(PaddingValues(top = 16.dp)) - ) - - Button( - onClick = { /*TODO*/ }, - modifier = Modifier - .fillMaxWidth() - .padding(PaddingValues(top = 16.dp)) - ) { - Text(stringResource(id = R.string.login_screen__login)) - } - } } \ No newline at end of file diff --git a/app/app/src/main/res/values/strings.xml b/app/app/src/main/res/values/strings.xml index eeba8bf..b5e28f5 100644 --- a/app/app/src/main/res/values/strings.xml +++ b/app/app/src/main/res/values/strings.xml @@ -6,6 +6,6 @@ Sign Up Username Password - Forgot Password + Forgot Password? \ No newline at end of file