From 0af4703b78007b117a233c03b9f5e9be2b8e3ab0 Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 16 Nov 2023 09:16:24 -0500 Subject: [PATCH] Migrate to standard M3 TabIndicator --- .../presentation/components/TabbedDialog.kt | 2 - .../presentation/components/TabbedScreen.kt | 2 - .../library/components/LibraryTabs.kt | 2 - .../core/components/material/Tabs.kt | 48 ------------------- 4 files changed, 54 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt index 712a71ac5f..88dc527035 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.util.fastForEachIndexed import eu.kanade.tachiyomi.R import kotlinx.coroutines.launch import tachiyomi.presentation.core.components.HorizontalPager -import tachiyomi.presentation.core.components.material.TabIndicator import tachiyomi.presentation.core.components.material.TabText object TabbedDialogPaddings { @@ -58,7 +57,6 @@ fun TabbedDialog( PrimaryTabRow( modifier = Modifier.weight(1f), selectedTabIndex = pagerState.currentPage, - indicator = { TabIndicator(it[pagerState.currentPage], pagerState.currentPageOffsetFraction) }, divider = {}, ) { tabTitles.fastForEachIndexed { index, tab -> diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt index 333f2a1359..72329aca6b 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt @@ -24,7 +24,6 @@ import androidx.compose.ui.res.stringResource import kotlinx.coroutines.launch import tachiyomi.presentation.core.components.HorizontalPager import tachiyomi.presentation.core.components.material.Scaffold -import tachiyomi.presentation.core.components.material.TabIndicator import tachiyomi.presentation.core.components.material.TabText @Composable @@ -69,7 +68,6 @@ fun TabbedScreen( ) { PrimaryTabRow( selectedTabIndex = state.currentPage, - indicator = { TabIndicator(it[state.currentPage], state.currentPageOffsetFraction) }, ) { tabs.forEachIndexed { index, tab -> Tab( diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt index bf599a06d1..3200d437de 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt @@ -10,7 +10,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.unit.dp import eu.kanade.presentation.category.visualName import tachiyomi.domain.category.model.Category -import tachiyomi.presentation.core.components.material.TabIndicator import tachiyomi.presentation.core.components.material.TabText @Composable @@ -24,7 +23,6 @@ internal fun LibraryTabs( PrimaryScrollableTabRow( selectedTabIndex = pagerState.currentPage, edgePadding = 0.dp, - indicator = { TabIndicator(it[pagerState.currentPage], pagerState.currentPageOffsetFraction) }, // TODO: use default when width is fixed upstream // https://issuetracker.google.com/issues/242879624 divider = {}, diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Tabs.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Tabs.kt index 23d65d07f2..30f6766d88 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Tabs.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Tabs.kt @@ -1,63 +1,15 @@ package tachiyomi.presentation.core.components.material -import androidx.compose.animation.core.Spring -import androidx.compose.animation.core.animateDpAsState -import androidx.compose.animation.core.spring import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.TabPosition -import androidx.compose.material3.TabRowDefaults.SecondaryIndicator import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.composed -import androidx.compose.ui.draw.clip import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.IntOffset -import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import tachiyomi.presentation.core.components.Pill -private fun Modifier.tabIndicatorOffset( - currentTabPosition: TabPosition, - currentPageOffsetFraction: Float, -) = fillMaxWidth() - .wrapContentSize(Alignment.BottomStart) - .composed { - val currentTabWidth by animateDpAsState( - targetValue = currentTabPosition.width, - animationSpec = spring(stiffness = Spring.StiffnessMediumLow), - label = "currentTabWidth", - ) - val offset by animateDpAsState( - targetValue = currentTabPosition.left + (currentTabWidth * currentPageOffsetFraction), - animationSpec = spring(stiffness = Spring.StiffnessMediumLow), - label = "offset", - ) - Modifier - .offset { IntOffset(x = offset.roundToPx(), y = 0) } - .width(currentTabWidth) - } - -@Composable -fun TabIndicator(currentTabPosition: TabPosition, currentPageOffsetFraction: Float) { - SecondaryIndicator( - modifier = Modifier - .tabIndicatorOffset(currentTabPosition, currentPageOffsetFraction) - .padding(horizontal = 8.dp) - .clip(RoundedCornerShape(topStart = 3.dp, topEnd = 3.dp)), - ) -} - @Composable fun TabText(text: String, badgeCount: Int? = null) { val pillAlpha = if (isSystemInDarkTheme()) 0.12f else 0.08f