diff --git a/lib/elements/select.js b/lib/elements/select.js index 6d6727f..05a2435 100644 --- a/lib/elements/select.js +++ b/lib/elements/select.js @@ -20,7 +20,7 @@ class SelectPrompt extends Prompt { constructor(opts={}) { super(opts); this.msg = opts.message; - this.hint = opts.hint || '- Use arrow-keys. Return to submit.'; + this.hint = opts.hint || '- Use arrow-keys to move up / down, or number keys jump to. Return to submit.'; this.warn = opts.warn || '- This option is disabled'; this.cursor = opts.initial || 0; this.choices = opts.choices.map((ch, idx) => { @@ -104,6 +104,24 @@ class SelectPrompt extends Prompt { this.render(); } + s1() { this.selectItem(0); } + s2() { this.selectItem(1); } + s3() { this.selectItem(2); } + s4() { this.selectItem(3); } + s5() { this.selectItem(4); } + s6() { this.selectItem(5); } + s7() { this.selectItem(6); } + s8() { this.selectItem(7); } + s9() { this.selectItem(8); } + s0() { this.selectItem(9); } + + selectItem(n) { + if (this.choices.length > n) { + this.moveCursor(n); + this.submit(); + } + } + next() { this.moveCursor((this.cursor + 1) % this.choices.length); this.render(); @@ -164,7 +182,7 @@ class SelectPrompt extends Prompt { } } - this.outputText += `${prefix} ${title}${color.gray(desc)}\n`; + this.outputText += `${prefix} ${(i - startIndex + 1).toString()}. ${title}${color.gray(desc)}\n`; } } diff --git a/lib/util/action.js b/lib/util/action.js index fefbd94..68b41e1 100644 --- a/lib/util/action.js +++ b/lib/util/action.js @@ -14,6 +14,16 @@ module.exports = (key, isSelect) => { if (isSelect) { if (key.name === 'j') return 'down'; if (key.name === 'k') return 'up'; + if (key.name === '1') return 's1'; + if (key.name === '2') return 's2'; + if (key.name === '3') return 's3'; + if (key.name === '4') return 's4'; + if (key.name === '5') return 's5'; + if (key.name === '6') return 's6'; + if (key.name === '7') return 's7'; + if (key.name === '8') return 's8'; + if (key.name === '9') return 's9'; + if (key.name === '0') return 's0'; } if (key.name === 'return') return 'submit';