mirror of
https://github.com/BetterAndroid/FlexiUI.git
synced 2025-09-08 11:34:18 +08:00
refactor: make content optional
This commit is contained in:
@@ -32,8 +32,9 @@ import androidx.compose.foundation.interaction.collectIsHoveredAsState
|
|||||||
import androidx.compose.foundation.interaction.collectIsPressedAsState
|
import androidx.compose.foundation.interaction.collectIsPressedAsState
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
@@ -85,7 +86,7 @@ fun CheckBox(
|
|||||||
style: CheckBoxStyle = CheckBox.style,
|
style: CheckBoxStyle = CheckBox.style,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||||
content: @Composable () -> Unit = {}
|
content: @Composable (RowScope.() -> Unit)? = null
|
||||||
) {
|
) {
|
||||||
val hovered by interactionSource.collectIsHoveredAsState()
|
val hovered by interactionSource.collectIsHoveredAsState()
|
||||||
val pressed by interactionSource.collectIsPressedAsState()
|
val pressed by interactionSource.collectIsPressedAsState()
|
||||||
@@ -120,10 +121,12 @@ fun CheckBox(
|
|||||||
tint = colors.contentColor
|
tint = colors.contentColor
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Box(
|
content?.also { content ->
|
||||||
modifier = Modifier.padding(start = style.contentSpacing)
|
Row(modifier = Modifier.clickable(enabled = enabled) { onCheckedChange(!checked) }) {
|
||||||
.clickable(enabled = enabled) { onCheckedChange(!checked) }
|
Box(modifier = Modifier.width(style.contentSpacing))
|
||||||
) { content() }
|
content()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,8 +33,9 @@ import androidx.compose.foundation.interaction.collectIsHoveredAsState
|
|||||||
import androidx.compose.foundation.interaction.collectIsPressedAsState
|
import androidx.compose.foundation.interaction.collectIsPressedAsState
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
@@ -84,7 +85,7 @@ fun RadioButton(
|
|||||||
style: RadioButtonStyle = RadioButton.style,
|
style: RadioButtonStyle = RadioButton.style,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||||
content: @Composable () -> Unit = {}
|
content: @Composable (RowScope.() -> Unit)? = null
|
||||||
) {
|
) {
|
||||||
val contentDiameter = style.contentRadius * 2
|
val contentDiameter = style.contentRadius * 2
|
||||||
val strokeDiameter = style.strokeRadius * 2
|
val strokeDiameter = style.strokeRadius * 2
|
||||||
@@ -115,10 +116,12 @@ fun RadioButton(
|
|||||||
.background(colors.contentColor, style.shape)
|
.background(colors.contentColor, style.shape)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Box(
|
content?.also { content ->
|
||||||
modifier = Modifier.padding(start = style.contentSpacing)
|
Row(modifier = Modifier.clickable(enabled = enabled, onClick = onClick)) {
|
||||||
.clickable(enabled = enabled, onClick = onClick)
|
Box(modifier = Modifier.width(style.contentSpacing))
|
||||||
) { content() }
|
content()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,6 +39,7 @@ import androidx.compose.foundation.layout.RowScope
|
|||||||
import androidx.compose.foundation.layout.offset
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
@@ -98,7 +99,7 @@ fun Switch(
|
|||||||
style: SwitchStyle = Switch.style,
|
style: SwitchStyle = Switch.style,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||||
content: @Composable () -> Unit = {}
|
content: @Composable (RowScope.() -> Unit)? = null
|
||||||
) {
|
) {
|
||||||
val thumbDiameter = style.thumbRadius * 2
|
val thumbDiameter = style.thumbRadius * 2
|
||||||
val maxOffsetX = with(LocalDensity.current) { (style.trackWidth - thumbDiameter - style.padding.horizontal).toPx() }
|
val maxOffsetX = with(LocalDensity.current) { (style.trackWidth - thumbDiameter - style.padding.horizontal).toPx() }
|
||||||
@@ -183,10 +184,12 @@ fun Switch(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
Row(modifier = Modifier.status(enabled).then(modifier)) {
|
Row(modifier = Modifier.status(enabled).then(modifier)) {
|
||||||
Box(
|
content?.also { content ->
|
||||||
modifier = Modifier.padding(end = style.contentSpacing)
|
Row(modifier = Modifier.clickable(enabled = enabled) { onCheckedChange(!checked) }) {
|
||||||
.clickable(enabled = enabled) { onCheckedChange(!checked) }
|
content()
|
||||||
) { content() }
|
Box(modifier = Modifier.width(style.contentSpacing))
|
||||||
|
}
|
||||||
|
}
|
||||||
Track { Thumb() }
|
Track { Thumb() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user