Custom Dropdowns

Examples of custom dropdown components used in the application.

Searchable Multi-Select Dropdown

A multi-select with inline search. Type to filter options, with beginning-of-word matches prioritized.

RustJavaScriptSearch languages...

Try typing 'c' to see C, C++, C#, Clojure, etc. grouped at the top. Type 'java' to see Java and JavaScript. Press Backspace with empty search to remove the last chip.

Searchable Multi-Select with Freetext

Same as above, but allows adding custom tags that aren't in the predefined list.

BugAdd tags...

Select from common tags or type a custom tag and press Enter to add it. Try typing 'urgent' or 'priority-high' and pressing Enter.

Ordered Multi-Select Dropdown

A simpler dropdown that allows selecting multiple items. Selected items appear as chips below the dropdown.

Apple

Click the dropdown to select additional fruits. Click the × on a chip to remove it.

Ordered Multi-Select with Filter Chip

Same as above, plus a nonselectable filter chip (not in the dropdown) that owns its own URL parameter. Removing it clears only that query param; sort chips still use the container param.

Demo filter (storybook)Apple

Open devtools and watch the URL: the demo chip uses ?story_demo_filter=demo-owner. Sort chips use ?story_fruits_sort=… (separate from the first demo's ?fruits=…).

How It Works

Searchable Multi-Select

  • Click or focus the input area to open the dropdown
  • Type to filter options - beginning matches appear first
  • Click an option or press Enter to select the first match
  • Selected items appear as removable chips inline with the search
  • Press Backspace with empty search to remove the last chip
  • Press Escape or click outside to close the dropdown
  • With freetext enabled, type any value and press Enter to add it as a custom chip

Ordered Multi-Select

  • Click the dropdown trigger to open the menu
  • Click an option to toggle its selection
  • Selected items appear as removable chips
  • The selection order is preserved
  • Selections can be persisted to URL parameters