feat: add shadow size in AreaBox and some tweaks

This commit is contained in:
2023-11-15 23:57:05 +08:00
parent c31ae99397
commit 2c5767d7a7

View File

@@ -41,9 +41,11 @@ import androidx.compose.runtime.compositionLocalOf
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.DefaultShapes import com.highcapable.flexiui.DefaultShapes
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
@@ -59,7 +61,8 @@ data class AreaBoxStyle(
val bottomPadding: Dp, val bottomPadding: Dp,
val endPadding: Dp, val endPadding: Dp,
val shape: Shape, val shape: Shape,
val border: BorderStroke val border: BorderStroke,
val shadowSize: Dp
) )
@Composable @Composable
@@ -76,7 +79,7 @@ fun AreaBox(
LocalAreaBoxShape provides style.shape LocalAreaBoxShape provides style.shape
) { ) {
Box( Box(
modifier = modifier.box(style, color), modifier = Modifier.box(style, color, modifier),
contentAlignment = contentAlignment, contentAlignment = contentAlignment,
propagateMinConstraints = propagateMinConstraints, propagateMinConstraints = propagateMinConstraints,
content = content content = content
@@ -98,7 +101,7 @@ fun AreaRow(
LocalAreaBoxShape provides style.shape LocalAreaBoxShape provides style.shape
) { ) {
Row( Row(
modifier = modifier.box(style, color), modifier = Modifier.box(style, color, modifier),
horizontalArrangement = horizontalArrangement, horizontalArrangement = horizontalArrangement,
verticalAlignment = verticalAlignment, verticalAlignment = verticalAlignment,
content = content content = content
@@ -120,7 +123,7 @@ fun AreaColumn(
LocalAreaBoxShape provides style.shape LocalAreaBoxShape provides style.shape
) { ) {
Column( Column(
modifier = modifier.box(style, color), modifier = Modifier.box(style, color, modifier),
verticalArrangement = verticalArrangement, verticalArrangement = verticalArrangement,
horizontalAlignment = horizontalAlignment, horizontalAlignment = horizontalAlignment,
content = content content = content
@@ -128,16 +131,21 @@ fun AreaColumn(
} }
} }
private fun Modifier.box(style: AreaBoxStyle, color: Color) = private fun Modifier.box(
clip(style.shape) style: AreaBoxStyle,
.background(color, style.shape) color: Color,
.borderOrNot(style.border, style.shape) modifier: Modifier,
.padding( ) = shadow(style.shadowSize, style.shape)
top = style.topPadding.orElse() ?: style.padding, .clip(style.shape)
start = style.startPadding.orElse() ?: style.padding, .background(color, style.shape)
bottom = style.bottomPadding.orElse() ?: style.padding, .borderOrNot(style.border, style.shape)
end = style.endPadding.orElse() ?: style.padding .then(modifier)
) .padding(
top = style.topPadding.orElse() ?: style.padding,
start = style.startPadding.orElse() ?: style.padding,
bottom = style.bottomPadding.orElse() ?: style.padding,
end = style.endPadding.orElse() ?: style.padding
)
object AreaBox { object AreaBox {
val color: Color val color: Color
@@ -165,7 +173,8 @@ private fun defaultAreaBoxStyle() = AreaBoxStyle(
bottomPadding = Dp.Unspecified, bottomPadding = Dp.Unspecified,
endPadding = Dp.Unspecified, endPadding = Dp.Unspecified,
shape = LocalShapes.current.primary, shape = LocalShapes.current.primary,
border = defaultAreaBoxBorder() border = defaultAreaBoxBorder(),
shadowSize = DefaultAreaBoxShadowSize
) )
@Composable @Composable
@@ -174,4 +183,6 @@ private fun defaultAreaBoxColor() = LocalColors.current.foregroundPrimary
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultAreaBoxBorder() = BorderStroke(LocalSizes.current.borderSizeTertiary, LocalColors.current.textPrimary) private fun defaultAreaBoxBorder() = BorderStroke(LocalSizes.current.borderSizeTertiary, LocalColors.current.textPrimary)
private val DefaultAreaBoxShadowSize = 0.dp