diff --git a/example.js b/example.js index 1d2263ce..48d31d73 100644 --- a/example.js +++ b/example.js @@ -31,17 +31,17 @@ const { prompt } = require('./lib'); message: 'Can you confirm?' }, { - type: 'list', - name: 'keywords', - message: 'Enter keywords' - }, - { - type: 'toggle', + type: prev => prev && 'toggle', name: 'confirmtoggle', - message: 'Can you confirm?', + message: 'Can you confirm again?', active: 'yes', inactive: 'no' }, + { + type: 'list', + name: 'keywords', + message: 'Enter keywords' + }, { type: 'select', name: 'color', diff --git a/lib/index.js b/lib/index.js index 12e06625..65867849 100644 --- a/lib/index.js +++ b/lib/index.js @@ -13,7 +13,7 @@ const noop = () => {}; async function prompt(questions=[], { onSubmit=noop, onCancel=noop }={}) { const answers = {}; questions = [].concat(questions); - let answer, question, quit, name, type, key; + let answer, question, quit, name, type; let MAP = prompt._map || {}; for (question of questions) { @@ -30,12 +30,16 @@ async function prompt(questions=[], { onSubmit=noop, onCancel=noop }={}) { } // if property is a function, invoke it unless it's ignored - for (key in question) { + for (let key in question) { if (ignore.includes(key)) continue; let value = question[key]; question[key] = typeof value === 'function' ? await value(answer, { ...answers }, question) : value; } + // update vars in case they changed + ({ name, type } = question); + + // skip if type is a falsy value if (!type) continue;