Chips in top app bar
This commit is contained in:
@@ -48,8 +48,9 @@ fun ScaffoldWithTopAppBar(
|
|||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun ScaffoldWithSmallTopAppBar(
|
fun ScaffoldWithSmallTopAppBarWithChips(
|
||||||
title: String,
|
title: String,
|
||||||
|
chips: List<String>,
|
||||||
navigateBack: () -> Unit,
|
navigateBack: () -> Unit,
|
||||||
floatingActionButton: @Composable (() -> Unit) = {},
|
floatingActionButton: @Composable (() -> Unit) = {},
|
||||||
contentWindowInsets: WindowInsets = WindowInsets.systemBars,
|
contentWindowInsets: WindowInsets = WindowInsets.systemBars,
|
||||||
@@ -64,9 +65,10 @@ fun ScaffoldWithSmallTopAppBar(
|
|||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.nestedScroll(topAppBarScrollBehavior.nestedScrollConnection),
|
.nestedScroll(topAppBarScrollBehavior.nestedScrollConnection),
|
||||||
topBar = {
|
topBar = {
|
||||||
SmallTopAppBar(
|
SmallTopAppBarWithChips(
|
||||||
title = title,
|
title = title,
|
||||||
scrollBehavior = topAppBarScrollBehavior,
|
scrollBehavior = topAppBarScrollBehavior,
|
||||||
|
chips = chips,
|
||||||
navigateBack = navigateBack
|
navigateBack = navigateBack
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ package org.xtimms.tokusho.core.components
|
|||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.ExperimentalLayoutApi
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.outlined.RssFeed
|
import androidx.compose.material.icons.outlined.RssFeed
|
||||||
@@ -19,12 +23,15 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
|||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.material3.LargeTopAppBar
|
import androidx.compose.material3.LargeTopAppBar
|
||||||
|
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.MediumTopAppBar
|
import androidx.compose.material3.MediumTopAppBar
|
||||||
|
import androidx.compose.material3.SuggestionChip
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||||
import androidx.compose.material3.surfaceColorAtElevation
|
import androidx.compose.material3.surfaceColorAtElevation
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@@ -157,6 +164,39 @@ fun DefaultTopAppBar(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class)
|
||||||
|
@Composable
|
||||||
|
fun SmallTopAppBarWithChips(
|
||||||
|
title: String,
|
||||||
|
scrollBehavior: TopAppBarScrollBehavior? = null,
|
||||||
|
navigateBack: () -> Unit,
|
||||||
|
chips: List<String>
|
||||||
|
) {
|
||||||
|
Column {
|
||||||
|
MediumTopAppBar(
|
||||||
|
title = { Text(text = title) },
|
||||||
|
navigationIcon = {
|
||||||
|
BackIconButton(onClick = navigateBack)
|
||||||
|
},
|
||||||
|
scrollBehavior = scrollBehavior
|
||||||
|
)
|
||||||
|
LazyRow(
|
||||||
|
modifier = Modifier.padding(horizontal = 16.dp),
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
|
) {
|
||||||
|
items(items = chips) {
|
||||||
|
CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides false) {
|
||||||
|
SuggestionChip(
|
||||||
|
modifier = Modifier.padding(vertical = 4.dp),
|
||||||
|
onClick = { },
|
||||||
|
label = { Text(text = it) },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SmallTopAppBar(
|
fun SmallTopAppBar(
|
||||||
@@ -201,6 +241,19 @@ fun DefaultTopAppBarPreview() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun DefaultTopAppBarWithChipsPreview() {
|
||||||
|
TokushoTheme {
|
||||||
|
SmallTopAppBarWithChips(
|
||||||
|
title = "Tokusho",
|
||||||
|
chips = listOf("Chip 1", "Chip 2", "Chip 3", "Chip 4", "Chip 1", "Chip 2", "Chip 3", "Chip 4"),
|
||||||
|
navigateBack = {}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|||||||
import coil.ImageLoader
|
import coil.ImageLoader
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.xtimms.tokusho.core.components.MangaCompactGridItem
|
import org.xtimms.tokusho.core.components.MangaCompactGridItem
|
||||||
import org.xtimms.tokusho.core.components.ScaffoldWithSmallTopAppBar
|
import org.xtimms.tokusho.core.components.ScaffoldWithSmallTopAppBarWithChips
|
||||||
import org.xtimms.tokusho.utils.composable.onBottomReached
|
import org.xtimms.tokusho.utils.composable.onBottomReached
|
||||||
import org.xtimms.tokusho.utils.system.toast
|
import org.xtimms.tokusho.utils.system.toast
|
||||||
|
|
||||||
@@ -76,8 +76,9 @@ private fun MangaListViewContent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ScaffoldWithSmallTopAppBar(
|
ScaffoldWithSmallTopAppBarWithChips(
|
||||||
title = source.title,
|
title = source.title,
|
||||||
|
chips = listOf("Chip 1", "Chip 2", "Chip 3", "Chip 4", "Chip 1", "Chip 2", "Chip 3", "Chip 4"),
|
||||||
navigateBack = navigateBack,
|
navigateBack = navigateBack,
|
||||||
contentWindowInsets = WindowInsets.systemBars
|
contentWindowInsets = WindowInsets.systemBars
|
||||||
.only(WindowInsetsSides.Horizontal)
|
.only(WindowInsetsSides.Horizontal)
|
||||||
|
|||||||
Reference in New Issue
Block a user