0.0.7 • Published 3 years ago
cli-list-select v0.0.7
cli-list-select
Simple command line interactive list
Install
npm i cli-list-selectDescription
Package exports single function
const list = require('cli-list-select');Function is async and has 2 arguments.
Function arguments
| Name | Type | Description |
|---|---|---|
| items | any[] | items to be displayed |
| options? | Option | options |
Returns Result
Options
| Field | Type | Default | Description |
|---|---|---|---|
| printItem | (item: any, index: number, isFocused: bool, isChecked: bool) => string | String | function that provides string representation for an item |
| index | number | 0 | initial focus position |
| singleCheck | bool | false | tells if only one item can be checked |
| checks | number[] | number | [] | NaN | initially checked items |
| handlers | Handlers | {} | custom key handlers |
Handlers
It is a map.
| Field | Type | Description |
|---|---|---|
| key | string | key name |
| value | (arg: HandlerArg) => void | key handler |
Default handlers are
| Key | Handler |
|---|---|
| up | move focus to previous item |
| down | move focus to next item |
| space | toggle check of the focused item |
| return | close the list |
HandlerArg
| Field | Type | Description |
|---|---|---|
| index | number | current focus |
| setIndex | (index: number) => void | function that sets current focus |
| toggleCheck | (index: number) => void | function that toggles check state of an item |
| end | (note: any) => void | function that closes the list |
Result
| Field | Type | Description |
|---|---|---|
| index | number | focus |
| checks | number[] | number | checked items |
| note | any | note returned in the end function |
Call
Just print a list
await list(['A', 'B', 'C']);-[ ] A
[ ] B
[ ] CSet initial focus
await list(['A', 'B', 'C'], { index: 1 }); [ ] A
-[ ] B
[ ] CCheck an item
[*] A
-[*] B
[ ] CSingle check mode
await list(['A', 'B', 'C'], { singleCheck: true }); [ ] A
-[*] B
[ ] CInitial checks
await list(['A', 'B', 'C'], { checks: [0, 2] });-[*] A
[ ] B
[*] CCustom print
await list([{ data: 'A' }, { data: 'B' }, { data: 'C' }], {
printItem: item => `<${item.data}>`
});-[ ] <A>
[ ] <B>
[ ] <C>Custom handlers
await list(['A', 'B', 'C'], {
handlers: {
'q': ({ end }) => end('Q'),
},
});