diff --git a/packages/nx/src/utils/params.spec.ts b/packages/nx/src/utils/params.spec.ts index c31476089eb24..0bc0012c792b2 100644 --- a/packages/nx/src/utils/params.spec.ts +++ b/packages/nx/src/utils/params.spec.ts @@ -1460,7 +1460,7 @@ describe('params', () => { ]); }); - it('should use an multiselect prompt for x-prompts with items', () => { + it('should use a multiselect prompt for x-prompts with items', () => { const prompts = getPromptsForSchema( {}, { @@ -1492,7 +1492,46 @@ describe('params', () => { ]); }); - it('should use an multiselect prompt for x-prompts with items', () => { + it('should use a multiselect prompt for array properties', () => { + const prompts = getPromptsForSchema( + {}, + { + properties: { + pets: { + type: 'array', + 'x-prompt': { + type: 'list', + message: 'What kind of pets do you have?', + items: [ + { label: 'Cat', value: 'cat' }, + { label: 'Dog', value: 'dog' }, + { label: 'Fish', value: 'fish' }, + ], + }, + }, + }, + }, + { + version: 2, + projects: {}, + } + ); + + expect(prompts).toEqual([ + { + type: 'multiselect', + name: 'pets', + message: 'What kind of pets do you have?', + choices: [ + { message: 'Cat', name: 'cat' }, + { message: 'Dog', name: 'dog' }, + { message: 'Fish', name: 'fish' }, + ], + }, + ]); + }); + + it('should use a multiselect prompt for x-prompts with items', () => { const prompts = getPromptsForSchema( {}, { diff --git a/packages/nx/src/utils/params.ts b/packages/nx/src/utils/params.ts index 5a7de0af5be47..dc71dd6c9ac6e 100644 --- a/packages/nx/src/utils/params.ts +++ b/packages/nx/src/utils/params.ts @@ -770,9 +770,10 @@ export function getPromptsForSchema( question.type = 'confirm'; } else if (v['x-prompt'].items) { question.message = v['x-prompt'].message; - question.type = v['x-prompt'].multiselect - ? 'multiselect' - : 'autocomplete'; + question.type = + v['x-prompt'].multiselect || v.type === 'array' + ? 'multiselect' + : 'autocomplete'; question.choices = v['x-prompt'].items && v['x-prompt'].items.map((item) => {