Use a single preview for radio buttons with checked & unchecked states
This commit is contained in:
parent
ebf6a98c34
commit
87e314fe4d
2 changed files with 40 additions and 24 deletions
|
|
@ -17,7 +17,9 @@
|
||||||
package io.element.android.libraries.designsystem.theme.components
|
package io.element.android.libraries.designsystem.theme.components
|
||||||
|
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.CheckCircle
|
import androidx.compose.material.icons.filled.CheckCircle
|
||||||
import androidx.compose.material.icons.filled.RadioButtonUnchecked
|
import androidx.compose.material.icons.filled.RadioButtonUnchecked
|
||||||
|
|
@ -30,6 +32,7 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||||
|
|
||||||
|
|
@ -56,23 +59,31 @@ fun IconToggleButton(
|
||||||
|
|
||||||
@Preview(group = PreviewGroup.Toggles)
|
@Preview(group = PreviewGroup.Toggles)
|
||||||
@Composable
|
@Composable
|
||||||
internal fun IconToggleButtonCheckedPreview() = ElementThemedPreview(vertical = false) { ContentToPreview(true) }
|
internal fun IconToggleButtonPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() }
|
||||||
|
|
||||||
@Preview(group = PreviewGroup.Toggles)
|
|
||||||
@Composable
|
|
||||||
internal fun IconToggleButtonUncheckedPreview() = ElementThemedPreview(vertical = false) { ContentToPreview(false) }
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview(defaultCheck: Boolean) {
|
private fun ContentToPreview() {
|
||||||
var checked by remember { mutableStateOf(defaultCheck) }
|
var checked by remember { mutableStateOf(false) }
|
||||||
val icon: @Composable () -> Unit = {
|
|
||||||
Icon(
|
|
||||||
imageVector = if (checked) Icons.Default.CheckCircle else Icons.Default.RadioButtonUnchecked,
|
|
||||||
contentDescription = "IconToggleButton"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Column {
|
Column {
|
||||||
IconToggleButton(checked = checked, enabled = true, onCheckedChange = { checked = !checked }, content = icon)
|
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
IconToggleButton(checked = checked, enabled = false, onCheckedChange = { checked = !checked }, content = icon)
|
val icon: @Composable () -> Unit = {
|
||||||
|
Icon(
|
||||||
|
imageVector = if (checked) Icons.Default.CheckCircle else Icons.Default.RadioButtonUnchecked,
|
||||||
|
contentDescription = "IconToggleButton"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
IconToggleButton(checked = checked, enabled = true, onCheckedChange = { checked = !checked }, content = icon)
|
||||||
|
IconToggleButton(checked = checked, enabled = false, onCheckedChange = { checked = !checked }, content = icon)
|
||||||
|
}
|
||||||
|
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
|
val icon: @Composable () -> Unit = {
|
||||||
|
Icon(
|
||||||
|
imageVector = if (!checked) Icons.Default.CheckCircle else Icons.Default.RadioButtonUnchecked,
|
||||||
|
contentDescription = "IconToggleButton"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
IconToggleButton(checked = !checked, enabled = true, onCheckedChange = { checked = !checked }, content = icon)
|
||||||
|
IconToggleButton(checked = !checked, enabled = false, onCheckedChange = { checked = !checked }, content = icon)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@
|
||||||
package io.element.android.libraries.designsystem.theme.components
|
package io.element.android.libraries.designsystem.theme.components
|
||||||
|
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.material3.RadioButtonColors
|
import androidx.compose.material3.RadioButtonColors
|
||||||
import androidx.compose.material3.RadioButtonDefaults
|
import androidx.compose.material3.RadioButtonDefaults
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
|
@ -27,6 +29,7 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||||
import io.element.android.libraries.theme.ElementTheme
|
import io.element.android.libraries.theme.ElementTheme
|
||||||
|
|
@ -63,17 +66,19 @@ internal fun compoundRadioButtonColors(): RadioButtonColors {
|
||||||
|
|
||||||
@Preview(group = PreviewGroup.Toggles)
|
@Preview(group = PreviewGroup.Toggles)
|
||||||
@Composable
|
@Composable
|
||||||
internal fun RadioButtonCheckedPreview() = ElementThemedPreview(vertical = false) { ContentToPreview(true) }
|
internal fun RadioButtonPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() }
|
||||||
|
|
||||||
@Preview(group = PreviewGroup.Toggles)
|
|
||||||
@Composable
|
|
||||||
internal fun RadioButtonUncheckedPreview() = ElementThemedPreview(vertical = false) { ContentToPreview(false) }
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview(defaultCheck: Boolean) {
|
private fun ContentToPreview() {
|
||||||
var checked by remember { mutableStateOf(defaultCheck) }
|
var checked by remember { mutableStateOf(false) }
|
||||||
Column {
|
Column {
|
||||||
RadioButton(selected = checked, enabled = true, onClick = { checked = !checked })
|
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
RadioButton(selected = checked, enabled = false, onClick = { checked = !checked })
|
RadioButton(selected = checked, enabled = true, onClick = { checked = !checked })
|
||||||
|
RadioButton(selected = checked, enabled = false, onClick = { checked = !checked })
|
||||||
|
}
|
||||||
|
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
|
RadioButton(selected = !checked, enabled = true, onClick = { checked = !checked })
|
||||||
|
RadioButton(selected = !checked, enabled = false, onClick = { checked = !checked })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue