@@ -32,7 +32,8 @@ MultiSelect.defaultProps = {
3232 }
3333 ] ,
3434 customValue : false ,
35- chipAlternateText : 'Item Selected'
35+ chipAlternateText : 'Item Selected' ,
36+ closeOnSelect : true
3637}
3738
3839function MultiSelect ( {
@@ -58,7 +59,8 @@ function MultiSelect({
5859 customValue,
5960 onMenuOpen,
6061 onMenuClose,
61- chipAlternateText
62+ chipAlternateText,
63+ closeOnSelect
6264} ) {
6365 const [ value , setValue ] = useState ( [ ] )
6466 const [ options , setOptions ] = useState ( userOptions || [ ] )
@@ -148,6 +150,8 @@ function MultiSelect({
148150 }
149151
150152 setValue ( preDefinedValue )
153+ // close on option select
154+ closeOnSelect && setMenuOpen ( false )
151155 } , [ defaultValue ] )
152156
153157 const setNewValue = ( val ) => {
@@ -172,7 +176,6 @@ function MultiSelect({
172176 }
173177 return { label, value }
174178 }
175-
176179 const addValue = ( newValObj ) => {
177180 let tmp = [ ...value ]
178181 if ( singleSelect ) {
@@ -328,7 +331,7 @@ function MultiSelect({
328331 }
329332 }
330333
331- const notClickableItem = ( target ) => {
334+ const nonClickableItem = ( target ) => {
332335 if (
333336 target . hasAttribute ( 'clickable' ) ||
334337 target . parentNode . hasAttribute ( 'clickable' ) ||
@@ -357,7 +360,7 @@ function MultiSelect({
357360 }
358361
359362 const openMenu = ( { target } ) => {
360- if ( notClickableItem ( target ) ) {
363+ if ( nonClickableItem ( target ) ) {
361364 if ( checkIsDropdownHandle ( target ) ) {
362365 if ( ! menuOpen ) {
363366 setMenuOpen ( true )
@@ -420,22 +423,14 @@ function MultiSelect({
420423 />
421424 ) ) }
422425 { ! singleSelect && disableChip && value . length > 0 && (
423- < span
424- className = 'msl-single-value'
425- data-msl
426- style = { { width : calculatedWidth } }
427- >
426+ < span className = 'msl-single-value' data-msl >
428427 { value . length === 1
429428 ? showLabel ( value [ 0 ] )
430429 : `${ value . length } ${ chipAlternateText } ` }
431430 </ span >
432431 ) }
433432 { singleSelect && value . length === 1 && (
434- < span
435- className = 'msl-single-value'
436- data-msl
437- style = { { width : calculatedWidth } }
438- >
433+ < span className = 'msl-single-value' data-msl >
439434 { showLabel ( value [ 0 ] ) }
440435 </ span >
441436 ) }
0 commit comments