Fixes shadow clipping in the light theme on FAB buttons.

This commit is contained in:
Vitor Pamplona
2026-04-08 16:29:06 -04:00
parent bd8486d165
commit b2a9215788
2 changed files with 27 additions and 3 deletions
@@ -22,12 +22,15 @@ package com.vitorpamplona.amethyst.ui.layouts
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.size
import androidx.compose.material3.BottomAppBarScrollBehavior
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.layout
import androidx.compose.ui.unit.dp
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -42,6 +45,7 @@ fun DisappearingFloatingButton(
Box(
modifier =
Modifier
.size(75.dp)
.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
// Adjust the height of the layout so the FAB doesn't leave a "hole"
@@ -50,12 +54,13 @@ fun DisappearingFloatingButton(
placeable.placeRelative(0, 0)
}
}.graphicsLayer {
this.translationY = this.size.height / 3.5f
this.scaleX = progress
this.scaleY = progress
this.alpha = progress
// Clip the content as it shrinks to prevent overflow
clip = true
},
contentAlignment = Alignment.TopCenter,
content = content,
)
}
@@ -21,8 +21,11 @@
package com.vitorpamplona.amethyst.ui.screen.loggedIn.home
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.BottomAppBarDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@@ -30,8 +33,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.layouts.DisappearingFloatingButton
import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.navigation.routes.Route
@@ -41,11 +46,25 @@ import com.vitorpamplona.amethyst.ui.theme.Size26Modifier
import com.vitorpamplona.amethyst.ui.theme.Size55Modifier
import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun NewNoteButtonPreview() {
val bottomBehavior =
BottomAppBarDefaults.exitAlwaysScrollBehavior(
canScroll = { true },
)
ThemeComparisonRow {
Box(Modifier.size(200.dp), contentAlignment = Alignment.Center) {
NewNoteButton(EmptyNav())
Column {
Box(Modifier.size(200.dp), contentAlignment = Alignment.Center) {
DisappearingFloatingButton(bottomBehavior) {
NewNoteButton(EmptyNav())
}
}
Box(Modifier.size(200.dp), contentAlignment = Alignment.Center) {
NewNoteButton(EmptyNav())
}
}
}
}