Loading app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt +24 −0 Original line number Diff line number Diff line Loading @@ -26,7 +26,31 @@ fun LazyGridScope.stateItems() { ItemOutlined { ErrorView( title = "Error", ) } } item { ItemOutlined { ErrorView( title = "Error with message", message = "Something went wrong", ) } } item { ItemOutlined { ErrorView( title = "Error with retry", onRetry = {}, ) } } item { ItemOutlined { ErrorView( title = "Error with retry and message", message = "Something went wrong", onRetry = {}, ) } } Loading core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/molecule/ErrorView.kt +59 −33 Original line number Diff line number Diff line Loading @@ -4,7 +4,9 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.Icon import androidx.compose.runtime.Composable Loading @@ -26,7 +28,7 @@ fun ErrorView( title: String, modifier: Modifier = Modifier, message: String? = null, onRetry: () -> Unit = { }, onRetry: (() -> Unit)? = null, contentAlignment: Alignment = Alignment.Center, ) { Box( Loading @@ -38,10 +40,10 @@ fun ErrorView( Column( modifier = Modifier .fillMaxWidth() .padding( vertical = MainTheme.spacings.default, horizontal = MainTheme.spacings.double, ), .padding(MainTheme.spacings.double), ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default), ) { Loading @@ -49,23 +51,23 @@ fun ErrorView( imageVector = Icons.Filled.error, contentDescription = null, tint = MainTheme.colors.error, modifier = Modifier.padding(top = MainTheme.spacings.default), ) TextSubtitle1( text = title, modifier = Modifier.padding(bottom = MainTheme.spacings.default), ) } if (message != null) { Spacer(modifier = Modifier.height(MainTheme.spacings.double)) TextBody2( text = message, modifier = Modifier .fillMaxWidth(), modifier = Modifier.fillMaxWidth(), ) } if (onRetry != null) { Spacer(modifier = Modifier.height(MainTheme.spacings.default)) Row( modifier = Modifier .fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End, ) { ButtonText( Loading @@ -80,6 +82,7 @@ fun ErrorView( } } } } @Preview(showBackground = true) @Composable Loading @@ -101,3 +104,26 @@ internal fun ErrorViewWithMessagePreview() { ) } } @Preview(showBackground = true) @Composable internal fun ErrorViewWithRetryPreview() { PreviewWithThemes { ErrorView( title = "Error", onRetry = {}, ) } } @Preview(showBackground = true) @Composable internal fun ErrorViewWithRetryAndMessagePreview() { PreviewWithThemes { ErrorView( title = "Error", message = "Something went wrong.", onRetry = {}, ) } } Loading
app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt +24 −0 Original line number Diff line number Diff line Loading @@ -26,7 +26,31 @@ fun LazyGridScope.stateItems() { ItemOutlined { ErrorView( title = "Error", ) } } item { ItemOutlined { ErrorView( title = "Error with message", message = "Something went wrong", ) } } item { ItemOutlined { ErrorView( title = "Error with retry", onRetry = {}, ) } } item { ItemOutlined { ErrorView( title = "Error with retry and message", message = "Something went wrong", onRetry = {}, ) } } Loading
core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/molecule/ErrorView.kt +59 −33 Original line number Diff line number Diff line Loading @@ -4,7 +4,9 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.Icon import androidx.compose.runtime.Composable Loading @@ -26,7 +28,7 @@ fun ErrorView( title: String, modifier: Modifier = Modifier, message: String? = null, onRetry: () -> Unit = { }, onRetry: (() -> Unit)? = null, contentAlignment: Alignment = Alignment.Center, ) { Box( Loading @@ -38,10 +40,10 @@ fun ErrorView( Column( modifier = Modifier .fillMaxWidth() .padding( vertical = MainTheme.spacings.default, horizontal = MainTheme.spacings.double, ), .padding(MainTheme.spacings.double), ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default), ) { Loading @@ -49,23 +51,23 @@ fun ErrorView( imageVector = Icons.Filled.error, contentDescription = null, tint = MainTheme.colors.error, modifier = Modifier.padding(top = MainTheme.spacings.default), ) TextSubtitle1( text = title, modifier = Modifier.padding(bottom = MainTheme.spacings.default), ) } if (message != null) { Spacer(modifier = Modifier.height(MainTheme.spacings.double)) TextBody2( text = message, modifier = Modifier .fillMaxWidth(), modifier = Modifier.fillMaxWidth(), ) } if (onRetry != null) { Spacer(modifier = Modifier.height(MainTheme.spacings.default)) Row( modifier = Modifier .fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End, ) { ButtonText( Loading @@ -80,6 +82,7 @@ fun ErrorView( } } } } @Preview(showBackground = true) @Composable Loading @@ -101,3 +104,26 @@ internal fun ErrorViewWithMessagePreview() { ) } } @Preview(showBackground = true) @Composable internal fun ErrorViewWithRetryPreview() { PreviewWithThemes { ErrorView( title = "Error", onRetry = {}, ) } } @Preview(showBackground = true) @Composable internal fun ErrorViewWithRetryAndMessagePreview() { PreviewWithThemes { ErrorView( title = "Error", message = "Something went wrong.", onRetry = {}, ) } }