123456789101112131415161718192021222324252627282930313233343536 |
- '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;
|