; | |
const StringPrompt = require('../types/string'); | |
class ListPrompt extends StringPrompt { | |
constructor(options = {}) { | |
super(options); | |
this.sep = this.options.separator || /, */; | |
this.initial = options.initial || ''; | |
} | |
split(input = this.value) { | |
return input ? String(input).split(this.sep) : []; | |
} | |
format() { | |
let style = this.state.submitted ? this.styles.primary : val => val; | |
return this.list.map(style).join(', '); | |
} | |
async submit(value) { | |
let result = this.state.error || await this.validate(this.list, this.state); | |
if (result !== true) { | |
this.state.error = result; | |
return super.submit(); | |
} | |
this.value = this.list; | |
return super.submit(); | |
} | |
get list() { | |
return this.split(); | |
} | |
} | |
module.exports = ListPrompt; | |