EnumField

inline fun <E : Enum<E>> EnumField(label: String, initialValue: E, type: SelectableField.Type = DROPDOWN, noinline choiceLabel: (E) -> String = { it.name }): SelectableField<E>

Create a SelectableField from enum class values.

This function automatically provides serialization support for enum types.

Usage

enum class ButtonVariant { Primary, Secondary, Tertiary }

@Preview
@Composable
fun ButtonPreview() = PreviewLab {
val variant: ButtonVariant = fieldValue {
EnumField(
label = "Variant",
initialValue = ButtonVariant.Primary
)
}
MyButton(variant = variant)
}

// With custom labels
@Preview
@Composable
fun LayoutPreview() = PreviewLab {
val direction: LayoutDirection = fieldValue {
EnumField(
label = "Direction",
initialValue = LayoutDirection.Ltr,
choiceLabel = { if (it == LayoutDirection.Ltr) "Left to Right" else "Right to Left" }
)
}
MyLayout(layoutDirection = direction)
}

See also