From 428c2e9678133a8588fc0e747a430a6b1b420ece Mon Sep 17 00:00:00 2001 From: student-i-nikolaevskiy Date: Wed, 25 Feb 2026 12:23:16 +0300 Subject: [PATCH] ui changes error field --- .../work/ui/screen/auth/AuthScreen.kt | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt index 6e82601..5b2ec53 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt @@ -2,22 +2,26 @@ package ru.myitschool.work.ui.screen.auth import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.imeNestedScroll import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text -import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -27,7 +31,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -38,6 +41,7 @@ import androidx.navigation.NavController import ru.myitschool.work.R import ru.myitschool.work.core.TestIds +@OptIn(ExperimentalLayoutApi::class) @Composable fun AuthScreen( viewModel: AuthViewModel = viewModel(), @@ -60,7 +64,8 @@ fun AuthScreen( .fillMaxSize() .padding(horizontal = 48.dp) .verticalScroll(rememberScrollState()) - .imePadding(), + .imePadding() + .imeNestedScroll(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { @@ -104,6 +109,7 @@ private fun Content( Spacer(modifier = Modifier.size(48.dp)) OutlinedTextField( modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(), + shape = RoundedCornerShape(8.dp), value = login, onValueChange = { login = it @@ -115,6 +121,7 @@ private fun Content( Spacer(modifier = Modifier.size(16.dp)) OutlinedTextField( modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(), + shape = RoundedCornerShape(8.dp), value = password, onValueChange = { password = it @@ -123,9 +130,29 @@ private fun Content( placeholder = { Text(stringResource(R.string.auth_placeholder_password)) }, label = { Text(stringResource(R.string.auth_label_passord)) } ) + Spacer(modifier = Modifier.size(16.dp)) + if (state.error != null) { + Card( + shape = RoundedCornerShape(20.dp), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.errorContainer, + ) + ) { + Text( + modifier = Modifier.testTag(TestIds.Auth.ERROR).padding(16.dp), + text = state.error, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onErrorContainer, + ) + } + + } Spacer(modifier = Modifier.size(20.dp)) Button( - modifier = Modifier.testTag(TestIds.Auth.SIGN_BUTTON).fillMaxWidth().height(64.dp), + modifier = Modifier + .testTag(TestIds.Auth.SIGN_BUTTON) + .fillMaxWidth() + .height(64.dp), onClick = { viewModel.onIntent(AuthIntent.Send(login, password)) }, @@ -136,12 +163,4 @@ private fun Content( style = MaterialTheme.typography.titleMedium, ) } - if (state.error != null) { - Text( - modifier = Modifier.testTag(TestIds.Auth.ERROR), - text = state.error, - style = MaterialTheme.typography.bodyMedium, - color = Color.Red, - ) - } } \ No newline at end of file