Use Compose Foundation's flow layout (#9123)

(cherry picked from commit 6b03dca5f47947a8fe1dd7989b19ff5d23030c2e)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
This commit is contained in:
Ivan Iskandar 2023-02-22 00:04:11 +07:00 committed by Jobobby04
parent fe088b279e
commit a57a813953
5 changed files with 15 additions and 11 deletions

View File

@ -156,7 +156,6 @@ dependencies {
implementation(compose.ui.tooling) implementation(compose.ui.tooling)
implementation(compose.ui.util) implementation(compose.ui.util)
implementation(compose.accompanist.webview) implementation(compose.accompanist.webview)
implementation(compose.accompanist.flowlayout)
implementation(compose.accompanist.permissions) implementation(compose.accompanist.permissions)
implementation(compose.accompanist.themeadapter) implementation(compose.accompanist.themeadapter)
implementation(compose.accompanist.systemuicontroller) implementation(compose.accompanist.systemuicontroller)

View File

@ -3,8 +3,10 @@ package eu.kanade.presentation.browse
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
@ -35,7 +37,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.accompanist.flowlayout.FlowRow
import eu.kanade.presentation.browse.components.BaseBrowseItem import eu.kanade.presentation.browse.components.BaseBrowseItem
import eu.kanade.presentation.browse.components.ExtensionIcon import eu.kanade.presentation.browse.components.ExtensionIcon
import eu.kanade.presentation.manga.components.DotSeparatorNoSpaceText import eu.kanade.presentation.manga.components.DotSeparatorNoSpaceText
@ -290,7 +291,7 @@ private fun ExtensionItemContent(
// Won't look good but it's not like we can ellipsize overflowing content // Won't look good but it's not like we can ellipsize overflowing content
FlowRow( FlowRow(
modifier = Modifier.secondaryItemAlpha(), modifier = Modifier.secondaryItemAlpha(),
mainAxisSpacing = 4.dp, horizontalArrangement = Arrangement.spacedBy(4.dp),
) { ) {
ProvideTextStyle(value = MaterialTheme.typography.bodySmall) { ProvideTextStyle(value = MaterialTheme.typography.bodySmall) {
if (extension is Extension.Installed && extension.lang.isNotEmpty()) { if (extension is Extension.Installed && extension.lang.isNotEmpty()) {

View File

@ -10,6 +10,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
@ -70,7 +71,6 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.google.accompanist.flowlayout.FlowRow
import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
@ -301,11 +301,11 @@ fun ExpandableMangaDescription(
// SY <-- // SY <--
FlowRow( FlowRow(
modifier = Modifier.padding(horizontal = 16.dp), modifier = Modifier.padding(horizontal = 16.dp),
mainAxisSpacing = 4.dp, horizontalArrangement = Arrangement.spacedBy(4.dp),
crossAxisSpacing = 8.dp,
) { ) {
tags.forEach { tags.forEach {
TagsChip( TagsChip(
modifier = Modifier.padding(vertical = 4.dp),
text = it, text = it,
onClick = { onClick = {
tagSelected = it tagSelected = it
@ -322,6 +322,7 @@ fun ExpandableMangaDescription(
) { ) {
items(items = tags) { items(items = tags) {
TagsChip( TagsChip(
modifier = Modifier.padding(vertical = 4.dp),
text = it, text = it,
onClick = { onClick = {
tagSelected = it tagSelected = it

View File

@ -2,6 +2,7 @@ package eu.kanade.presentation.manga.components
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@ -19,7 +20,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.accompanist.flowlayout.FlowRow
import eu.kanade.presentation.components.ChipBorder import eu.kanade.presentation.components.ChipBorder
import eu.kanade.presentation.components.SuggestionChip import eu.kanade.presentation.components.SuggestionChip
import eu.kanade.presentation.components.SuggestionChipDefaults import eu.kanade.presentation.components.SuggestionChipDefaults
@ -103,16 +103,16 @@ fun NamespaceTags(
tags.tags.forEach { (namespace, tags) -> tags.tags.forEach { (namespace, tags) ->
Row(Modifier.padding(start = 16.dp)) { Row(Modifier.padding(start = 16.dp)) {
if (namespace.isNotEmpty()) { if (namespace.isNotEmpty()) {
TagsChip(namespace, onClick = null, onLongClick = null) TagsChip(text = namespace, onClick = null, onLongClick = null)
} }
FlowRow( FlowRow(
modifier = Modifier.padding(start = 8.dp, end = 16.dp), modifier = Modifier.padding(start = 8.dp, end = 16.dp),
mainAxisSpacing = 4.dp, horizontalArrangement = Arrangement.spacedBy(4.dp),
crossAxisSpacing = 8.dp,
) { ) {
tags.forEach { (_, text, search, border) -> tags.forEach { (_, text, search, border) ->
val borderDp = border?.dp val borderDp = border?.dp
TagsChip( TagsChip(
modifier = Modifier.padding(vertical = 4.dp),
text = text, text = text,
onClick = { onClick(search) }, onClick = { onClick(search) },
border = borderDp?.let { border = borderDp?.let {
@ -131,6 +131,7 @@ fun NamespaceTags(
@Composable @Composable
fun TagsChip( fun TagsChip(
modifier: Modifier = Modifier,
text: String, text: String,
onClick: (() -> Unit)?, onClick: (() -> Unit)?,
onLongClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null,
@ -141,6 +142,7 @@ fun TagsChip(
if (onClick != null) { if (onClick != null) {
if (onLongClick != null) { if (onLongClick != null) {
SuggestionChip( SuggestionChip(
modifier = modifier,
onClick = onClick, onClick = onClick,
onLongClick = onLongClick, onLongClick = onLongClick,
label = { label = {
@ -159,6 +161,7 @@ fun TagsChip(
) )
} else { } else {
SuggestionChip( SuggestionChip(
modifier = modifier,
onClick = onClick, onClick = onClick,
label = { label = {
Text( Text(
@ -177,6 +180,7 @@ fun TagsChip(
} }
} else { } else {
SuggestionChip( SuggestionChip(
modifier = modifier,
label = { label = {
Text( Text(
text = text, text = text,

View File

@ -19,7 +19,6 @@ material-icons = { module = "androidx.compose.material:material-icons-extended"
material-core = { module = "androidx.compose.material:material" } material-core = { module = "androidx.compose.material:material" }
accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist" } accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist" }
accompanist-flowlayout = { module = "com.google.accompanist:accompanist-flowlayout", version.ref = "accompanist" }
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
accompanist-themeadapter = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } accompanist-themeadapter = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" }
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }