From 7c7a1737ed8b4bae1576c8735c35b813d4edd2bd Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Sun, 2 Jul 2023 12:22:56 +0200 Subject: [PATCH 1/6] Enhance login form --- .../com/jerboa/ui/components/login/Login.kt | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/jerboa/ui/components/login/Login.kt b/app/src/main/java/com/jerboa/ui/components/login/Login.kt index 790c842bf..157f1d823 100644 --- a/app/src/main/java/com/jerboa/ui/components/login/Login.kt +++ b/app/src/main/java/com/jerboa/ui/components/login/Login.kt @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.ArrowBack @@ -29,6 +31,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.PopupProperties import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController import com.jerboa.DEFAULT_LEMMY_INSTANCES @@ -130,7 +133,7 @@ fun LoginForm( }, ) { OutlinedTextField( - modifier = Modifier.menuAnchor(), + modifier = Modifier.menuAnchor().width(OutlinedTextFieldDefaults.MinWidth), label = { Text(stringResource(R.string.login_instance)) }, placeholder = { Text(stringResource(R.string.login_instance_placeholder)) }, value = instance, @@ -141,30 +144,35 @@ fun LoginForm( }, keyboardOptions = KeyboardOptions(autoCorrect = false, keyboardType = KeyboardType.Uri), ) - ExposedDropdownMenu( - expanded = expanded, - onDismissRequest = { - expanded = false - }, - ) { - instanceOptions.forEach { selectionOption -> - DropdownMenuItem( - modifier = Modifier.exposedDropdownSize(), - text = { - Text(text = selectionOption) - }, - onClick = { - instance = selectionOption - expanded = false - }, - contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding, - ) + val filteringOptions = instanceOptions.filter { it.contains(instance, ignoreCase = true) } + if (filteringOptions.isNotEmpty()) { + DropdownMenu( + expanded = expanded, + onDismissRequest = { + expanded = false + }, + properties = PopupProperties(focusable = false), + modifier = Modifier.exposedDropdownSize(true), + ) { + filteringOptions.forEach { selectionOption -> + DropdownMenuItem( + modifier = Modifier.exposedDropdownSize(), + text = { + Text(text = selectionOption) + }, + onClick = { + instance = selectionOption + expanded = false + }, + ) + } } } } MyTextField( modifier = Modifier + .width(OutlinedTextFieldDefaults.MinWidth) .background(if (wasAutofilled) MaterialTheme.colorScheme.surfaceVariant else Color.Transparent) .onAutofill(AutofillType.Username, AutofillType.EmailAddress) { username = it @@ -176,6 +184,7 @@ fun LoginForm( ) PasswordField( modifier = Modifier + .width(OutlinedTextFieldDefaults.MinWidth) .background(if (wasAutofilled) MaterialTheme.colorScheme.surfaceVariant else Color.Transparent) .onAutofill(AutofillType.Password) { password = it @@ -186,6 +195,7 @@ fun LoginForm( ) MyTextField( modifier = Modifier + .width(OutlinedTextFieldDefaults.MinWidth) .background(if (wasAutofilled) MaterialTheme.colorScheme.surfaceVariant else Color.Transparent) .onAutofill(AutofillType.SmsOtpCode) { totp = it @@ -201,7 +211,7 @@ fun LoginForm( modifier = Modifier.padding(top = 10.dp), ) { if (loading) { - CircularProgressIndicator() + CircularProgressIndicator(modifier = Modifier.size(24.dp)) } else { Text(stringResource(R.string.login_login)) } @@ -215,6 +225,12 @@ fun LoginFormPreview() { LoginForm() } +@Preview +@Composable +fun LoginFormLoadingPreview() { + LoginForm(loading = true) +} + @Composable fun LoginHeader( navController: NavController = rememberNavController(), From a2e6989f83e01fa53a237bdf4f09a769c111a06e Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Sun, 2 Jul 2023 12:41:15 +0200 Subject: [PATCH 2/6] Remove preview --- app/src/main/java/com/jerboa/ui/components/login/Login.kt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/java/com/jerboa/ui/components/login/Login.kt b/app/src/main/java/com/jerboa/ui/components/login/Login.kt index 157f1d823..f2edf637d 100644 --- a/app/src/main/java/com/jerboa/ui/components/login/Login.kt +++ b/app/src/main/java/com/jerboa/ui/components/login/Login.kt @@ -225,11 +225,6 @@ fun LoginFormPreview() { LoginForm() } -@Preview -@Composable -fun LoginFormLoadingPreview() { - LoginForm(loading = true) -} @Composable fun LoginHeader( From 41fd95faaa03beadd3ba0443cae357cda08a392b Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Sun, 2 Jul 2023 13:05:31 +0200 Subject: [PATCH 3/6] Fix formatting --- app/src/main/java/com/jerboa/ui/components/login/Login.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/jerboa/ui/components/login/Login.kt b/app/src/main/java/com/jerboa/ui/components/login/Login.kt index f2edf637d..0c6f814b8 100644 --- a/app/src/main/java/com/jerboa/ui/components/login/Login.kt +++ b/app/src/main/java/com/jerboa/ui/components/login/Login.kt @@ -225,7 +225,6 @@ fun LoginFormPreview() { LoginForm() } - @Composable fun LoginHeader( navController: NavController = rememberNavController(), From 03b306c05ea89eb24d8e5f6a70aacf3105b00adf Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Sun, 2 Jul 2023 21:22:58 +0200 Subject: [PATCH 4/6] Trigger woodpicker From 2e222f013714b0d0aa73deca1d93e0aa1626ab6e Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Mon, 3 Jul 2023 17:26:46 +0200 Subject: [PATCH 5/6] Fix behaviour --- .../java/com/jerboa/ui/components/login/Login.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/jerboa/ui/components/login/Login.kt b/app/src/main/java/com/jerboa/ui/components/login/Login.kt index 0c6f814b8..16ee6bde7 100644 --- a/app/src/main/java/com/jerboa/ui/components/login/Login.kt +++ b/app/src/main/java/com/jerboa/ui/components/login/Login.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization @@ -133,7 +134,9 @@ fun LoginForm( }, ) { OutlinedTextField( - modifier = Modifier.menuAnchor().width(OutlinedTextFieldDefaults.MinWidth), + modifier = Modifier + .menuAnchor() + .width(OutlinedTextFieldDefaults.MinWidth), label = { Text(stringResource(R.string.login_instance)) }, placeholder = { Text(stringResource(R.string.login_instance_placeholder)) }, value = instance, @@ -148,9 +151,7 @@ fun LoginForm( if (filteringOptions.isNotEmpty()) { DropdownMenu( expanded = expanded, - onDismissRequest = { - expanded = false - }, + onDismissRequest = {}, properties = PopupProperties(focusable = false), modifier = Modifier.exposedDropdownSize(true), ) { @@ -210,8 +211,9 @@ fun LoginForm( onClick = { onClickLogin(form, instance) }, modifier = Modifier.padding(top = 10.dp), ) { + if (loading) { - CircularProgressIndicator(modifier = Modifier.size(24.dp)) + CircularProgressIndicator(modifier = Modifier.size(LocalTextStyle.current.fontSize.value.dp)) } else { Text(stringResource(R.string.login_login)) } From 5989e179c0d41f6535c5900783257a6e2c4c9366 Mon Sep 17 00:00:00 2001 From: "maarten.vercruysse" Date: Mon, 3 Jul 2023 17:31:10 +0200 Subject: [PATCH 6/6] Fix formatting --- app/src/main/java/com/jerboa/ui/components/login/Login.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/com/jerboa/ui/components/login/Login.kt b/app/src/main/java/com/jerboa/ui/components/login/Login.kt index 16ee6bde7..cb1d07fe1 100644 --- a/app/src/main/java/com/jerboa/ui/components/login/Login.kt +++ b/app/src/main/java/com/jerboa/ui/components/login/Login.kt @@ -23,7 +23,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.autofill.AutofillType -import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization @@ -211,7 +210,6 @@ fun LoginForm( onClick = { onClickLogin(form, instance) }, modifier = Modifier.padding(top = 10.dp), ) { - if (loading) { CircularProgressIndicator(modifier = Modifier.size(LocalTextStyle.current.fontSize.value.dp)) } else {