Skip to content

List sheet

A bottom sheet with a title, a lazy list body and a pinned footer, for pickers and short forms.

List sheet List sheet

var open by remember {
    mutableStateOf(
        value = false,
    )
}
var selected by remember {
    mutableStateOf(
        value = "Gate A",
    )
}
JengaButton(
    text = "List sheet",
    onClick = { open = true },
    variant = JengaButtonVariant.Outline,
)
if (open) {
    JengaListSheet(
        onDismissRequest = { open = false },
        title = "Select a gate",
        subtitle =
        buildAnnotatedString {
            append(
                text = "Scanning at ",
            )
            withStyle(
                style = SpanStyle(
                    fontWeight = FontWeight.SemiBold,
                ),
            ) {
                append(
                    text = selected,
                )
            }
        },
        footer = {
            JengaButton(
                text = "Done",
                onClick = { open = false },
                modifier = Modifier.weight(
                    weight = 1f,
                ),
            )
        },
        content = {
            items(
                items = listOf(
                    "Gate A",
                    "Gate B",
                    "Gate C",
                ),
            ) { gate ->
                JengaRadioListItem(
                    headline = gate,
                    selected = gate == selected,
                    onClick = { selected = gate },
                )
            }
        },
    )
}