feat: add combinedClickable, rippleCombinedClickable in Interaction

This commit is contained in:
2023-12-03 01:35:43 +08:00
parent 2abe50fde5
commit 556ef3d55d

View File

@@ -36,6 +36,7 @@ import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.Dp 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.combinedClickable as foundationCombinedClickable
import androidx.compose.foundation.selection.selectable as foundationSelectable 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 import androidx.compose.material.ripple.rememberRipple as materialRememberRipple
@@ -60,6 +61,19 @@ fun Modifier.clickable(
onClick: () -> Unit onClick: () -> Unit
) = foundationClickable(interactionSource, indication, enabled, onClickLabel, role, onClick) ) = foundationClickable(interactionSource, indication, enabled, onClickLabel, role, onClick)
@Composable
fun Modifier.combinedClickable(
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
indication: Indication? = null,
enabled: Boolean = true,
onClickLabel: String? = null,
role: Role? = null,
onLongClickLabel: String? = null,
onLongClick: (() -> Unit)? = null,
onDoubleClick: (() -> Unit)? = null,
onClick: () -> Unit
) = foundationCombinedClickable(interactionSource, indication, enabled, onClickLabel, role, onLongClickLabel, onLongClick, onDoubleClick, onClick)
@Composable @Composable
fun Modifier.toggleable( fun Modifier.toggleable(
value: Boolean, value: Boolean,
@@ -97,6 +111,29 @@ fun Modifier.rippleClickable(
role = role role = role
) )
@Composable
fun Modifier.rippleCombinedClickable(
rippleStyle: RippleStyle = Interaction.rippleStyle,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
enabled: Boolean = true,
onClickLabel: String? = null,
role: Role? = null,
onLongClickLabel: String? = null,
onLongClick: (() -> Unit)? = null,
onDoubleClick: (() -> Unit)? = null,
onClick: () -> Unit
) = combinedClickable(
interactionSource = interactionSource,
indication = rememberRipple(rippleStyle),
enabled = enabled,
onClickLabel = onClickLabel,
role = role,
onLongClickLabel = onLongClickLabel,
onLongClick = onLongClick,
onDoubleClick = onDoubleClick,
onClick = onClick
)
@Composable @Composable
fun Modifier.rippleToggleable( fun Modifier.rippleToggleable(
value: Boolean, value: Boolean,