Combobox
Built-in Combobox tags — Select, Autocomplete, MultiSelect, TagsInput, Pill, PillsInput, TreeSelect, and the low-level Combobox primitive, each a single Markdown tag.
The Combobox family is the set of dropdown, select, and autocomplete inputs. Each is a
single {% tag %} you write in Markdown, so a searchable select or a
tags field goes into a page with no JavaScript to write. They arrive as static markup and
become fully interactive once the page loads.
- Select — a single-select dropdown, searchable on request.
- Autocomplete — a free-text input with a suggestion list.
- MultiSelect — pick several options, shown as removable pills.
- TagsInput — type free-text tags, with optional suggestions.
- TreeSelect — pick a leaf from a collapsible hierarchy.
- Pill — the small rounded chip the multi-value inputs render.
- PillsInput — the input shell that holds pills plus a field.
- Combobox — the low-level primitive everything else is built on.
Options data
Every select-style tag takes its options through data, and the simplest form is a
comma-separated list of strings. Select and
MultiSelect additionally read value::label pairs (a
double colon), so a short stored value can carry a friendly label:
{% select data='React, Vue, Svelte' %}
{% select data='us::United States, ca::Canada, mx::Mexico' %}
For grouped, disabled, or otherwise richer options, pass a full JSON array through
dataJson instead (it wins over data):
{% select dataJson='[{"group":"Frontend","items":["React","Vue"]},{"group":"Backend","items":["Django","Rails"]}]' %}
Autocomplete and
TagsInput share the comma-separated data and the
dataJson escape hatch, but not the value::label form: their entries are free text, so
each item is taken as a plain string and a :: inside one stays part of the string.
TreeSelect takes a nested JSON tree instead (see its
page).
High-level vs. primitives
Most of the time you want the ready-made inputs — Select, MultiSelect,
Autocomplete, TagsInput, TreeSelect. The remaining two,
Combobox and
PillsInput, are the composition primitives the
others are built from; their pages explain when (rarely) you’d reach for them directly.