Skip to content

Commit

Permalink
add multiselect example using result option
Browse files Browse the repository at this point in the history
  • Loading branch information
doowb committed Jan 13, 2020
1 parent d113842 commit 0a1a108
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 6 deletions.
50 changes: 44 additions & 6 deletions docs/prompts.md
Expand Up @@ -389,19 +389,57 @@ const prompt = new MultiSelect({
{ name: 'white', value: '#ffffff' },
{ name: 'yellow', value: '#ffff00' }
]
// // MultiSelect prompt returns array of selected names by default
// // use the result() and .map() method to get at associated values
// // returns key-value dictionary of selected names and values
// , result(names) {
// return this.map(names); // so we can actually get at the value
// }
});

prompt.run()
.then(answer => console.log('Answer:', answer))
.catch(console.error);

// Answer: ['aqua', 'blue', 'fuchsia']
```
**Example key-value pairs**
Optionally, pass a `result` function and use the `.map` method to return an object of key-value pairs of the selected names and values: [example](./examples/multiselect/option-result.js)
```js
const { MultiSelect } = require('enquirer');

const prompt = new MultiSelect({
name: 'value',
message: 'Pick your favorite colors',
limit: 7,
choices: [
{ name: 'aqua', value: '#00ffff' },
{ name: 'black', value: '#000000' },
{ name: 'blue', value: '#0000ff' },
{ name: 'fuchsia', value: '#ff00ff' },
{ name: 'gray', value: '#808080' },
{ name: 'green', value: '#008000' },
{ name: 'lime', value: '#00ff00' },
{ name: 'maroon', value: '#800000' },
{ name: 'navy', value: '#000080' },
{ name: 'olive', value: '#808000' },
{ name: 'purple', value: '#800080' },
{ name: 'red', value: '#ff0000' },
{ name: 'silver', value: '#c0c0c0' },
{ name: 'teal', value: '#008080' },
{ name: 'white', value: '#ffffff' },
{ name: 'yellow', value: '#ffff00' }
],
result(names) {
return this.map(names);
}
});

prompt.run()
.then(answer => console.log('Answer:', answer))
.catch(console.error);

// Answer: { aqua: '#00ffff', blue: '#0000ff', fuchsia: '#ff00ff' }
```
**Related prompts**
- [AutoComplete](#autocomplete-prompt)
Expand Down
34 changes: 34 additions & 0 deletions examples/multiselect/option-result.js
@@ -0,0 +1,34 @@
'use strict';

const { MultiSelect } = require('enquirer');

const prompt = new MultiSelect({
name: 'value',
message: 'Pick your favorite colors',
limit: 7,
choices: [
{ name: 'aqua', value: '#00ffff' },
{ name: 'black', value: '#000000' },
{ name: 'blue', value: '#0000ff' },
{ name: 'fuchsia', value: '#ff00ff' },
{ name: 'gray', value: '#808080' },
{ name: 'green', value: '#008000' },
{ name: 'lime', value: '#00ff00' },
{ name: 'maroon', value: '#800000' },
{ name: 'navy', value: '#000080' },
{ name: 'olive', value: '#808000' },
{ name: 'purple', value: '#800080' },
{ name: 'red', value: '#ff0000' },
{ name: 'silver', value: '#c0c0c0' },
{ name: 'teal', value: '#008080' },
{ name: 'white', value: '#ffffff' },
{ name: 'yellow', value: '#ffff00' }
],
result(names) {
return this.map(names);
}
});

prompt.run()
.then(answer => console.log('Answer:', answer))
.catch(console.error);

0 comments on commit 0a1a108

Please sign in to comment.