Cascader
v1.0.7NewUpdated 27 Aug 2026Hierarchical dependent select (Ant Cascader-style) for tree-shaped choices such as Thai addresses (จังหวัด → เขต/อำเภอ → แขวง/ตำบล). Multi-column popover where each pick reveals the next level; the value is the string[]
Preview
Live · 15 stories▸Why this is recommendedcascaderselecthierarchydependent-select+5
The default, out-of-the-box Cascader.
- ✓Thai address pickers (province → district → subdistrict)
- ✓Product category selectors
- ✓Org / department / cost-center pickers
- ✓Any dependent drill-down taxonomy
- Multi-column popover, one column per level
- Click or hover expansion (expandTrigger)
- changeOnSelect commits intermediate levels
- Search flattens the tree into full label paths
- Async loadChildren with per-node spinner (isLeaf: false)
- Custom displayRender for the joined trigger label
- Clearable (✕ button; Backspace/Delete on closed trigger)
- Controlled + uncontrolled value (string[] path)
- Full keyboard: ↑↓ within a column, → expands, ← collapses, Enter selects, Esc closes
- Trigger sizes sm / md / lg
- i18n: labels prop overrides the built-in aria-label strings; placeholder / searchPlaceholder / emptyMessage stay overridable as props
- ✕Flat option lists (use Combobox / Select)
- ✕Multi-select trees with checkboxes (use TreeView / TransferList)
- ✕Very deep trees on narrow screens
Install
Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.
Usage
Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.
Props
optionsRoot of the option tree ({ value, label, children?, disabled?, isLeaf? })
yesvalueControlled path from root to the selected node
—defaultValueUncontrolled initial path
—onValueChangeChange callback with resolved option objects
—expandTriggerHow branch columns expand (default click)
—changeOnSelectCommit the value on every level click, not only leaves
—loadChildrenAsync children fetch for isLeaf:false nodes (per-node spinner)
—displayRenderCustom trigger label renderer
—clearableShow a clear button when a value is set
—searchablePath-flattening search input (default true)
—sizeTrigger size
—labelsOverride the built-in aria-label strings — clear affordance, search-results listbox, column {level} template (i18n). Merged over DEFAULT_CASCADER_LABELS.
—