RNDAMP-8921: use new bottom bar
This commit is contained in:
@@ -3,23 +3,26 @@ package ru.shadowsparky.ui
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.layout.wrapContentWidth
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.IconButtonDefaults
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.NavigationBar
|
||||
import androidx.compose.material3.NavigationBarDefaults
|
||||
import androidx.compose.material3.NavigationBarItem
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.SnackbarHost
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
@@ -62,26 +65,41 @@ private fun <T : Route> BottomBar(
|
||||
) {
|
||||
navigationEntries?.let { entries ->
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
.background(
|
||||
Brush.verticalGradient(
|
||||
listOf(Color.Transparent, MaterialTheme.colorScheme.surfaceContainer)
|
||||
)
|
||||
)
|
||||
.padding(8.dp)
|
||||
.windowInsetsPadding(WindowInsets.navigationBars)
|
||||
.windowInsetsPadding(WindowInsets.navigationBars),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
NavigationBar(
|
||||
containerColor = navBarContentColor(),
|
||||
modifier = Modifier.clip(RoundedCornerShape(24.dp)).blurEffect()
|
||||
Row(
|
||||
modifier = Modifier.clip(RoundedCornerShape(24.dp))
|
||||
.wrapContentWidth()
|
||||
.background(navBarContentColor())
|
||||
.blurEffect()
|
||||
.padding(8.dp)
|
||||
) {
|
||||
entries.forEach { entry ->
|
||||
NavigationBarItem(
|
||||
selected = currentRoute == entry.route,
|
||||
val containerColor = if (currentRoute == entry.route) {
|
||||
MaterialTheme.colorScheme.secondaryContainer
|
||||
} else {
|
||||
Color.Unspecified
|
||||
}
|
||||
val contentColor = if (currentRoute == entry.route) {
|
||||
MaterialTheme.colorScheme.onSecondaryContainer
|
||||
} else {
|
||||
Color.Unspecified
|
||||
}
|
||||
IconButton(
|
||||
onClick = { onSelectNavigation?.invoke(entry.route) },
|
||||
icon = { Icon(entry.painter, contentDescription = entry.title) }
|
||||
)
|
||||
modifier = Modifier.padding(4.dp),
|
||||
colors = IconButtonDefaults.iconButtonColors(containerColor, contentColor)
|
||||
) {
|
||||
Icon(entry.painter, contentDescription = entry.title)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,11 @@ import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.focus.FocusRequester
|
||||
import androidx.compose.ui.focus.focusRequester
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
@@ -29,6 +32,7 @@ fun ErrorContent(
|
||||
retry: Boolean = true,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
val requester = remember { FocusRequester() }
|
||||
val buttonTextRes = if (retry) Res.string.retry else Res.string.ok
|
||||
Column(
|
||||
verticalArrangement = Arrangement.Center,
|
||||
@@ -47,7 +51,7 @@ fun ErrorContent(
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
Spacer(Modifier.height(8.dp))
|
||||
Button(modifier = buttonModifier, onClick = { onClick() }) {
|
||||
Button(modifier = buttonModifier.focusRequester(requester), onClick = { onClick() }) {
|
||||
Text(
|
||||
text = stringResource(buttonTextRes),
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
|
||||
Reference in New Issue
Block a user