multiselect
Pick multiple options from a list.
Preview
Selecting
multiselect
◇ Select features│ >■ TypeScript│ □ ESLint│ ■ Vitest│ □ GitHub Actions└
After submit
multiselect
◆ Select features│ TypeScript, Vitest
Usage
import { multiselect, isCancel } from 'termprompt';
const features = await multiselect({
message: 'Select features',
options: [
{ value: 'ts', label: 'TypeScript' },
{ value: 'lint', label: 'ESLint' },
{ value: 'test', label: 'Vitest' },
{ value: 'ci', label: 'GitHub Actions' },
],
});
if (isCancel(features)) process.exit(0);
console.log(features); // ['ts', 'lint', ...]
Props
| Prop | Type | Default | Description |
|---|---|---|---|
message | string | required | Question text |
options | Option<T>[] | required | List of choices |
initialValues | T[] | [] | Pre-selected values |
required | boolean | true | Require at least one selection |
maxItems | number | 10 | Visible items before scrolling |
Pre-selected Values
const extras = await multiselect({
message: 'Extras',
options: [
{ value: 'ts', label: 'TypeScript' },
{ value: 'lint', label: 'ESLint' },
{ value: 'test', label: 'Vitest' },
],
initialValues: ['ts', 'lint'],
});
Optional Selection
Set required: false to allow submitting with no selections.
const extras = await multiselect({
message: 'Optional extras',
options: [...],
required: false,
});
Keyboard
| Key | Action |
|---|---|
Up / k | Move up |
Down / j | Move down |
Space | Toggle current |
a | Toggle all |
Enter | Submit |
Esc | Cancel |