Home

Awesome

console-menu

Displays a menu of items in the console and asynchronously waits for the user to select an item. Each item title is prefixed by a hotkey. An item may be selected by typing a hotkey or by using Down/Up arrows followed by Enter.

.--------------.
| Example menu |
+--------------+
| [a] Item A   |
|  b) Item B   |
|  c) Item C   |
|  d) Item D   |
|  e) Item E   |
'--\/----------'

The menu may be scrollable (hinted by /\ and \/ indicators). PageUp, PageDown, Home, and End keys are also supported.

Usage

The menu function takes two parameters: an items array and an options object.

Each item must be an object with the following properties:

Items may have additional user-defined properties, which will be included in the returned result.

The following options are supported:

The return value is a Promise that resolves to the chosen item object, or to null if the menu was cancelled by pressing Esc or Ctrl-C.

Example

var menu = require('console-menu');
menu([
    { hotkey: '1', title: 'One' },
    { hotkey: '2', title: 'Two', selected: true },
    { hotkey: '3', title: 'Three' },
    { separator: true },
    { hotkey: '?', title: 'Help' },
], {
    header: 'Example menu',
    border: true,
}).then(item => {
    if (item) {
        console.log('You chose: ' + JSON.stringify(item));
    } else {
        console.log('You cancelled the menu.');
    }
});