refactor: RadioItem to be a ListItem

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-03-07 20:42:23 +01:00
parent 745b3a3847
commit 4050e97970
1 changed files with 13 additions and 25 deletions

View File

@ -1,48 +1,36 @@
package chat.revolt.components.generic
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.selection.selectable
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ListItem
import androidx.compose.material3.RadioButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp
@Composable
fun RadioItem(
selected: Boolean,
onClick: () -> Unit,
label: @Composable () -> Unit,
modifier: Modifier = Modifier
modifier: Modifier = Modifier,
) {
Row(
modifier
ListItem(
modifier = modifier
.fillMaxWidth()
.height(56.dp)
.selectable(
selected = selected,
onClick = onClick,
role = Role.RadioButton
)
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = selected,
onClick = null
)
Spacer(Modifier.width(16.dp))
CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodyLarge) {
),
headlineContent = {
label()
},
leadingContent = {
RadioButton(
selected = selected,
onClick = null
)
}
}
)
}