From 556ef3d55dc22fa8309dbe6c6dc2d24822fb09d9 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 3 Dec 2023 01:35:43 +0800 Subject: [PATCH] feat: add combinedClickable, rippleCombinedClickable in Interaction --- .../flexiui/interaction/Interaction.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/flexiui-core/src/commonMain/kotlin/com/highcapable/flexiui/interaction/Interaction.kt b/flexiui-core/src/commonMain/kotlin/com/highcapable/flexiui/interaction/Interaction.kt index 6d6619e..40ab4df 100644 --- a/flexiui-core/src/commonMain/kotlin/com/highcapable/flexiui/interaction/Interaction.kt +++ b/flexiui-core/src/commonMain/kotlin/com/highcapable/flexiui/interaction/Interaction.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.Dp import com.highcapable.flexiui.LocalColors 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.toggleable as foundationToggleable import androidx.compose.material.ripple.rememberRipple as materialRememberRipple @@ -60,6 +61,19 @@ fun Modifier.clickable( onClick: () -> Unit ) = 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 fun Modifier.toggleable( value: Boolean, @@ -97,6 +111,29 @@ fun Modifier.rippleClickable( 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 fun Modifier.rippleToggleable( value: Boolean,