--- /dev/null
+'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;