mirror of
https://github.com/BetterAndroid/FlexiUI.git
synced 2025-09-09 12:04:11 +08:00
feat: add LocalPrimaryButton for provided primary and content button
This commit is contained in:
@@ -34,6 +34,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.CompositionLocalProvider
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
|
import androidx.compose.runtime.compositionLocalOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@@ -226,19 +227,39 @@ object IconButton {
|
|||||||
get() = defaultIconButtonStyle()
|
get() = defaultIconButtonStyle()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val LocalPrimaryButton = compositionLocalOf { false }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
private fun defaultButtonColors() =
|
private fun defaultPrimaryButtonColors() = ButtonColors(
|
||||||
when (LocalInAreaBox.current) {
|
|
||||||
true -> ButtonColors(
|
|
||||||
contentColor = LocalColors.current.textPrimary,
|
|
||||||
backgroundColor = LocalColors.current.foregroundSecondary
|
|
||||||
)
|
|
||||||
else -> ButtonColors(
|
|
||||||
contentColor = Color.White,
|
contentColor = Color.White,
|
||||||
backgroundColor = LocalColors.current.themePrimary
|
backgroundColor = LocalColors.current.themePrimary
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
@Composable
|
||||||
|
@ReadOnlyComposable
|
||||||
|
private fun defaultContentButtonColors() = ButtonColors(
|
||||||
|
contentColor = LocalColors.current.textPrimary,
|
||||||
|
backgroundColor = LocalColors.current.foregroundSecondary
|
||||||
|
)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@ReadOnlyComposable
|
||||||
|
private fun defaultPrimaryButtonRippleStyle() =
|
||||||
|
Interaction.rippleStyle.copy(color = LocalColors.current.foregroundSecondary)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@ReadOnlyComposable
|
||||||
|
private fun defaultContentButtonRippleStyle() =
|
||||||
|
Interaction.rippleStyle.copy(color = LocalColors.current.themeSecondary)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@ReadOnlyComposable
|
||||||
|
private fun defaultButtonColors() = when {
|
||||||
|
LocalPrimaryButton.current -> defaultPrimaryButtonColors()
|
||||||
|
LocalInAreaBox.current -> defaultContentButtonColors()
|
||||||
|
else -> defaultPrimaryButtonColors()
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
@@ -254,11 +275,11 @@ private fun defaultButtonStyle() = ButtonStyle(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
private fun defaultButtonRippleStyle() =
|
private fun defaultButtonRippleStyle() = when {
|
||||||
Interaction.rippleStyle.copy(color = when (LocalInAreaBox.current) {
|
LocalPrimaryButton.current -> defaultPrimaryButtonRippleStyle()
|
||||||
true -> LocalColors.current.themeSecondary
|
LocalInAreaBox.current -> defaultContentButtonRippleStyle()
|
||||||
else -> LocalColors.current.foregroundSecondary
|
else -> defaultPrimaryButtonRippleStyle()
|
||||||
})
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
|
Reference in New Issue
Block a user