inquirer-maxlength-input-prompt
Input prompt with max length for inquirer
Extends the built-in input
prompt type to allow a max input length to be
specified, and shows a character counter which updates as the user types.
Usage
Install using npm
or yarn
:
yarn add inquirer-maxlength-input-prompt
Register the prompt with inquirer
:
const inquirer = require('inquirer')
const MaxLengthInputPrompt = require('inquirer-maxlength-input-prompt')
inquirer.registerPrompt('maxlength-input', MaxLengthInputPrompt)
When you use the prompt, you must provide a maxLength
option:
inquirer.prompt([
{
type: 'maxlength-input',
name: 'title',
message: 'Enter a title',
maxLength: 20
}
]).then(answers => {
})
Options
In addition to the options that the built-in input
type prompt
takes, this plugin also takes:
maxLength
(Number [required]): the maximum number of characters the user can enter
The following options behave slightly differently, and are demonstrated in:
transformer
(Function): you get the current answers
hash as an extra
(second) argument.validate
(Function): for convenience, you get the raw user input as an extra
(third) argument. This makes it easy to do checks against raw user input when you
have a filter
parameter that adds prefixes/suffixes/otherwise modifies the
input.
- the validation against
maxLength
is performed before your own custom
validate
function is invoked
These additions are demonstrated in the example "Adding a prefix"
below.
Examples
Basic usage
const inquirer = require('inquirer')
const MaxLengthInputPrompt = require('inquirer-maxlength-input-prompt')
inquirer.registerPrompt('maxlength-input', MaxLengthInputPrompt)
inquirer.prompt([
{
type: 'maxlength-input',
name: 'title',
message: 'Enter a title',
maxLength: 15
}
]).then(console.log)
Adding a prefix
This example shows one way to prefix the user's input with a value and pretty
print it during prompting, using the filter
and transformer
options
respectively. In addition, this example also shows how the raw
parameter that
is passed to the validate
function can be used - in this case, it is used to
ensure the user still enters data despite the presence of the prefix.
const chalk = require('chalk')
const inquirer = require('inquirer')
const MaxLengthInputPrompt = require('inquirer-maxlength-input-prompt')
inquirer.registerPrompt('maxlength-input', MaxLengthInputPrompt)
inquirer.prompt([
{
type: 'list',
name: 'commitType',
message: 'What type of change are you committing?',
choices: ['feature', 'fix', 'docs', 'other']
},
{
type: 'maxlength-input',
name: 'commitHeader',
maxLength: 50,
message: 'Enter the commit subject',
validate(input, answers, raw) {
if (!raw) {
return 'Please enter a subject for your commit'
}
return true
},
filter(input, answers) {
return `${answers.commitType}: ${input}`
},
transformer(input, answers) {
return chalk.blue(`${answers.commitType}: `) + input
}
}
]).then(console.log)