use experimental rail
This commit is contained in:
@@ -3,12 +3,12 @@ package ru.shadowsparky.ui
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.calculateEndPadding
|
||||
import androidx.compose.foundation.layout.calculateStartPadding
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.safeDrawing
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material3.ColorScheme
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
|
||||
@@ -29,12 +29,13 @@ import androidx.compose.runtime.Immutable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.shadowsparky.ui.nav.Route
|
||||
import ru.shadowsparky.ui.theme.ComponentDefaults
|
||||
import ru.shadowsparky.ui.theme.getColorScheme
|
||||
|
||||
const val USE_EXPERIMENTAL_RAIL = false
|
||||
const val USE_EXPERIMENTAL_RAIL = true
|
||||
|
||||
@Immutable
|
||||
data class NavigationEntry<out T : Route>(
|
||||
@@ -125,9 +126,7 @@ private fun <T : Route> BottomBar(
|
||||
NavigationBarItem(
|
||||
currentRoute == entry.route,
|
||||
onClick = { onSelectNavigation?.invoke(entry.route) },
|
||||
icon = {
|
||||
Icon(entry.painter, contentDescription = entry.title)
|
||||
},
|
||||
icon = { Icon(entry.painter, contentDescription = entry.title) },
|
||||
label = { Text(entry.title) }
|
||||
)
|
||||
}
|
||||
@@ -144,23 +143,30 @@ private fun <T : Route> ExpandedContent(
|
||||
onSelectNavigation: ((T) -> Unit)?,
|
||||
content: @Composable ((PaddingValues) -> Unit)
|
||||
) {
|
||||
Row(Modifier.fillMaxSize().padding(values)) {
|
||||
Spacer(Modifier.width(4.dp))
|
||||
NavigationRail {
|
||||
val topPadding = values.calculateTopPadding()
|
||||
val bottomPadding = values.calculateBottomPadding()
|
||||
val startPadding = values.calculateStartPadding(LayoutDirection.Ltr)
|
||||
val endPadding = values.calculateEndPadding(LayoutDirection.Ltr)
|
||||
Row(modifier = Modifier.fillMaxSize().padding(top = topPadding)) {
|
||||
NavigationRail(modifier = Modifier.padding(horizontal = 4.dp)) {
|
||||
navigationEntries.forEach { entry ->
|
||||
NavigationRailItem(
|
||||
selected = currentRoute == entry.route,
|
||||
onClick = { onSelectNavigation?.invoke(entry.route) },
|
||||
icon = {
|
||||
Icon(entry.painter, contentDescription = entry.title)
|
||||
},
|
||||
icon = { Icon(entry.painter, contentDescription = entry.title) },
|
||||
label = { Text(entry.title) }
|
||||
)
|
||||
}
|
||||
}
|
||||
Spacer(Modifier.width(4.dp))
|
||||
Box(Modifier.weight(1f)) {
|
||||
content(PaddingValues(0.dp))
|
||||
Box(modifier = Modifier.weight(1f)) {
|
||||
content(
|
||||
PaddingValues(
|
||||
start = startPadding,
|
||||
top = 0.dp,
|
||||
end = endPadding,
|
||||
bottom = bottomPadding
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user