Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
811 B
Text
36 lines
811 B
Text
'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;
|