list.js
811 Bytes
'use strict';
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;