Skip to content
Devix Open Source

Reference

Options

createCombobox(target, options) takes everything createSelect takes, with these defaults changed and three options of its own.

Option Type Default What it does
single boolean false One value instead of chips.
maxTags number — Stop after this many.
validate (text) => string | null — Clean up the text, or return null to refuse it.
separators string[] ['Enter', ','] Keys and characters that finish a tag. 'Tab' is supported.
editable boolean true Double-click a chip to edit it.
reorder boolean true Drag chips into a different order.
options SelectOption[] [] Suggestions.
load (query, ctx) => Promise — Remote suggestions — debounced, aborted, cached.
placeholder, theme, classNames, icons, render, strings As in Select.

Everything on the instance — getValue, setValue, getSelected, setOptions, open, close, clear, focus, enable, disable, destroy — is the same too, and so are the events: dx:selectchange, dx:selectcreate, dx:selectsearch, dx:selectopen, dx:selectclose.

Validation

createCombobox(input, {
  validate: (text) => {
    const clean = text.trim().toLowerCase();
    if (clean.length < 3) return null;                  // too short: refused
    if (!/^[a-z0-9-]+$/.test(clean)) return null;       // letters, digits and dashes only
    return clean;                                        // this is what becomes the tag
  },
});

Duplicates are ignored whatever validate says, so the same tag can't land twice.

Suggestions that are not tags

Pass creatable: false to turn the field into a picker over options with no free text at all — at which point you probably want @devix-labs/select instead.

Updated 15 Sep 2026