mirror of
https://github.com/BetterAndroid/FlexiUI.git
synced 2025-09-08 19:44:25 +08:00
feat: add selectable, rippleSelectable, rememberRipple
This commit is contained in:
@@ -25,16 +25,25 @@ package com.highcapable.flexiui.interaction
|
|||||||
|
|
||||||
import androidx.compose.foundation.Indication
|
import androidx.compose.foundation.Indication
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
import androidx.compose.material.ripple.rememberRipple
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.semantics.Role
|
import androidx.compose.ui.semantics.Role
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
import com.highcapable.flexiui.LocalColors
|
import com.highcapable.flexiui.LocalColors
|
||||||
import androidx.compose.foundation.clickable as foundationClickable
|
import androidx.compose.foundation.clickable as foundationClickable
|
||||||
|
import androidx.compose.foundation.selection.selectable as foundationSelectable
|
||||||
import androidx.compose.foundation.selection.toggleable as foundationToggleable
|
import androidx.compose.foundation.selection.toggleable as foundationToggleable
|
||||||
|
import androidx.compose.material.ripple.rememberRipple as materialRememberRipple
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun rememberRipple(
|
||||||
|
bounded: Boolean = true,
|
||||||
|
radius: Dp = Dp.Unspecified,
|
||||||
|
color: Color = Interaction.rippleColor
|
||||||
|
) = materialRememberRipple(bounded, radius, color)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Modifier.clickable(
|
fun Modifier.clickable(
|
||||||
@@ -56,6 +65,16 @@ fun Modifier.toggleable(
|
|||||||
onValueChange: (Boolean) -> Unit
|
onValueChange: (Boolean) -> Unit
|
||||||
) = foundationToggleable(value, interactionSource, indication, enabled, role, onValueChange)
|
) = foundationToggleable(value, interactionSource, indication, enabled, role, onValueChange)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun Modifier.selectable(
|
||||||
|
selected: Boolean,
|
||||||
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||||
|
indication: Indication? = null,
|
||||||
|
enabled: Boolean = true,
|
||||||
|
role: Role? = null,
|
||||||
|
onClick: () -> Unit
|
||||||
|
) = foundationSelectable(selected, interactionSource, indication, enabled, role, onClick)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Modifier.rippleClickable(
|
fun Modifier.rippleClickable(
|
||||||
rippleColor: Color = Interaction.rippleColor,
|
rippleColor: Color = Interaction.rippleColor,
|
||||||
@@ -92,6 +111,24 @@ fun Modifier.rippleToggleable(
|
|||||||
onValueChange = onValueChange
|
onValueChange = onValueChange
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun Modifier.rippleSelectable(
|
||||||
|
selected: Boolean,
|
||||||
|
rippleColor: Color = Interaction.rippleColor,
|
||||||
|
bounded: Boolean = true,
|
||||||
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||||
|
enabled: Boolean = true,
|
||||||
|
role: Role? = null,
|
||||||
|
onClick: () -> Unit
|
||||||
|
) = selectable(
|
||||||
|
selected = selected,
|
||||||
|
interactionSource = interactionSource,
|
||||||
|
indication = rememberRipple(bounded = bounded, color = rippleColor),
|
||||||
|
enabled = enabled,
|
||||||
|
role = role,
|
||||||
|
onClick = onClick
|
||||||
|
)
|
||||||
|
|
||||||
object Interaction {
|
object Interaction {
|
||||||
val rippleColor: Color
|
val rippleColor: Color
|
||||||
@Composable
|
@Composable
|
||||||
|
Reference in New Issue
Block a user