From d5b8067f33be4d4f6d6e71c595fe2115fc62def9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Tailly?= Date: Mon, 22 May 2023 22:55:00 +0200 Subject: [PATCH] Possibility to enter the line number on the keyboard. Added the "index" variable in the call to "valueRenderer" to allow inserting this line number when rendering. --- src/input.js | 7 +++++++ src/renderer.js | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/input.js b/src/input.js index 380be43..fdad100 100644 --- a/src/input.js +++ b/src/input.js @@ -135,6 +135,13 @@ export default class Input { this.close(); } else if (key.name === 'escape' || (key.name === 'c' && key.ctrl)) { this.close(true); + } else if (key.sequence.match(/^\d$/)) { + const number = parseInt(key.sequence) - 1; + if (number < this.values.length) { + this.selectedValue = number; + this.render(); + this.close(); + } } } } diff --git a/src/renderer.js b/src/renderer.js index c6613d5..5c6b9ce 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -47,7 +47,7 @@ export default class Renderer { this.values.forEach((value, index) => { const symbol = selectedValue === index ? this.options.selected : this.options.unselected; const indentation = ' '.repeat(this.options.indentation); - const renderedValue = this.options.valueRenderer(value, selectedValue === index); + const renderedValue = this.options.valueRenderer(value, selectedValue === index, index); const end = index !== this.values.length - 1 ? '\n' : ''; this.stream.write(indentation + symbol + ' ' + renderedValue + end); });