@@ -462,8 +462,10 @@ export interface GroupMultiSelectOptions<Value> {
462462 initialValues ?: Value [ ] ;
463463 required ?: boolean ;
464464 cursorAt ?: Value ;
465+ groupSpacing ?: number ;
465466}
466467export const groupMultiselect = < Value > ( opts : GroupMultiSelectOptions < Value > ) => {
468+ const { groupSpacing = 0 } = opts ;
467469 const opt = (
468470 option : Option < Value > ,
469471 state :
@@ -482,33 +484,35 @@ export const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) =>
482484 const next = isItem && ( options [ options . indexOf ( option ) + 1 ] ?? { group : true } ) ;
483485 const isLast = isItem && ( next as any ) . group === true ;
484486 const prefix = isItem ? `${ isLast ? S_BAR_END : S_BAR } ` : '' ;
487+ const spacingPrefix =
488+ groupSpacing > 0 && ! isItem ? `\n${ color . cyan ( S_BAR ) } ` . repeat ( groupSpacing ) : '' ;
485489
486490 if ( state === 'active' ) {
487- return `${ color . dim ( prefix ) } ${ color . cyan ( S_CHECKBOX_ACTIVE ) } ${ label } ${
491+ return `${ spacingPrefix } ${ color . dim ( prefix ) } ${ color . cyan ( S_CHECKBOX_ACTIVE ) } ${ label } ${
488492 option . hint ? color . dim ( `(${ option . hint } )` ) : ''
489493 } `;
490494 }
491495 if ( state === 'group-active' ) {
492- return `${ prefix } ${ color . cyan ( S_CHECKBOX_ACTIVE ) } ${ color . dim ( label ) } ` ;
496+ return `${ spacingPrefix } ${ prefix } ${ color . cyan ( S_CHECKBOX_ACTIVE ) } ${ color . dim ( label ) } ` ;
493497 }
494498 if ( state === 'group-active-selected' ) {
495- return `${ prefix } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ color . dim ( label ) } ` ;
499+ return `${ spacingPrefix } ${ prefix } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ color . dim ( label ) } ` ;
496500 }
497501 if ( state === 'selected' ) {
498- return `${ color . dim ( prefix ) } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ color . dim ( label ) } ` ;
502+ return `${ spacingPrefix } ${ color . dim ( prefix ) } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ color . dim ( label ) } ` ;
499503 }
500504 if ( state === 'cancelled' ) {
501505 return `${ color . strikethrough ( color . dim ( label ) ) } ` ;
502506 }
503507 if ( state === 'active-selected' ) {
504- return `${ color . dim ( prefix ) } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ label } ${
508+ return `${ spacingPrefix } ${ color . dim ( prefix ) } ${ color . green ( S_CHECKBOX_SELECTED ) } ${ label } ${
505509 option . hint ? color . dim ( `(${ option . hint } )` ) : ''
506510 } `;
507511 }
508512 if ( state === 'submitted' ) {
509513 return `${ color . dim ( label ) } ` ;
510514 }
511- return `${ color . dim ( prefix ) } ${ color . dim ( S_CHECKBOX_INACTIVE ) } ${ color . dim ( label ) } ` ;
515+ return `${ spacingPrefix } ${ color . dim ( prefix ) } ${ color . dim ( S_CHECKBOX_INACTIVE ) } ${ color . dim ( label ) } ` ;
512516 } ;
513517
514518 return new GroupMultiSelectPrompt ( {
0 commit comments