Basic radio list
'express', or null before selection. String and integer keys are supported; numeric identities travel as strings to preserve large IDs and leading zeros. Selecting another row replaces the previous choice; clicking the selected row keeps it selected.
Add supporting information
desc is an alias for description. Explicit values inside an option override values supplied by icons() and descriptions().
Compact label-only variant
label-only keeps the radio indicator and label and omits icons and descriptions, even if those are configured. The default variant is default. Other variant names are rejected.
Unavailable choices
Sizes and accents
sm, md (default) or lg, or the matching ControlSize enum. All variants support these sizes. The default accent uses the panel primary color. Standard names include primary, secondary, success, warning and danger. Pass null to omit the color class.
Dynamic options
live() when its updates should rebuild dependent options. Reset a dependent selection when the old key is no longer available. Unknown keys fail validation; they are not silently accepted. Standard Filament field hooks, including afterStateUpdated(), remain available.
Saving and validation
required() when an empty selection is not permitted. Scope database-backed options to the current user’s permissions.
Keyboard, RTL and touch
- Tab focuses the selected enabled radio, or the first enabled radio.
- Up/Down select the previous/next enabled option and wrap at the ends.
- Left/Right select according to the text direction, including RTL.
- Home/End select the first/last enabled option.
- Space or Enter selects the focused option once per press.
Configuration reference
Rich options accept
label, description (or desc), icon and disabled. In JSON field definitions, use flex_radiolist as the field type.