@@ -47,6 +47,7 @@ export class MultiSelect extends React.Component {
4747 resetable : T . bool ,
4848 enableSearch : T . bool ,
4949 hasSelectAll : T . bool ,
50+ stopClickPropagation : T . bool ,
5051 } ;
5152 static defaultProps = {
5253 mode : MODE . LIST ,
@@ -65,6 +66,7 @@ export class MultiSelect extends React.Component {
6566 resetable : false ,
6667 enableSearch : false ,
6768 hasSelectAll : false ,
69+ stopClickPropagation : false ,
6870 } ;
6971
7072 constructor ( p ) {
@@ -166,9 +168,10 @@ export class MultiSelect extends React.Component {
166168
167169 /**
168170 * Toggle MultiSelect DropDown
171+ * @param event
169172 * @param value Boolean
170173 */
171- toggleDropDown = value => {
174+ toggleDropDown = ( event , value ) => {
172175 const { props : p } = this ;
173176 if ( p . disabled || p . isLoading ) return ;
174177
@@ -179,14 +182,16 @@ export class MultiSelect extends React.Component {
179182 searchText : '' ,
180183 } : { } ) ,
181184 } ) ) ;
185+
186+ if ( event && p . stopClickPropagation ) u . stopPreventPropagation ( event ) ;
182187 } ;
183188
184189 /**
185190 * Handle hover to trigger DropDown list
186191 * @param expanded Boolean
187192 */
188193 handleHover = expanded => {
189- if ( this . props . shouldToggleOnHover ) this . toggleDropDown ( expanded ) ;
194+ if ( this . props . shouldToggleOnHover ) this . toggleDropDown ( null , expanded ) ;
190195 } ;
191196
192197 /**
@@ -215,7 +220,7 @@ export class MultiSelect extends React.Component {
215220 keyDown = event => {
216221 const { props : p , state : s } = this ;
217222
218- if ( ! s . expanded ) this . toggleDropDown ( true ) ;
223+ if ( ! s . expanded ) this . toggleDropDown ( null , true ) ;
219224 else this . setState ( ( { focusIndex} ) => {
220225 let nextIndex = focusIndex + 1 ;
221226
@@ -238,7 +243,7 @@ export class MultiSelect extends React.Component {
238243 const { props : p , state : s } = this ;
239244
240245 if ( s . expanded ) {
241- if ( s . focusIndex === - 2 ) this . toggleDropDown ( false ) ;
246+ if ( s . focusIndex === - 2 ) this . toggleDropDown ( null , false ) ;
242247 else this . setState ( ( { focusIndex} ) => {
243248 let nextIndex = focusIndex - 1 ;
244249
@@ -269,9 +274,9 @@ export class MultiSelect extends React.Component {
269274 ( {
270275 [ event . which ] : ( ) => { } ,
271276 8 : ( ) => this . clearValue ( event ) , // BackSpace
272- 9 : ( ) => this . toggleDropDown ( false ) , // Tab
277+ 9 : ( ) => this . toggleDropDown ( null , false ) , // Tab
273278 27 : ( ) => { // Esc
274- this . toggleDropDown ( false ) ;
279+ this . toggleDropDown ( null , false ) ;
275280 this . handleFocusControl ( - 2 ) ;
276281 u . stopPreventPropagation ( event ) ;
277282 } ,
@@ -288,7 +293,7 @@ export class MultiSelect extends React.Component {
288293 * @param optionValue value string
289294 */
290295 select = optionValue => {
291- if ( this . isSingle ( ) ) this . setState ( { value : [ optionValue ] } , ( ) => this . toggleDropDown ( false ) ) ;
296+ if ( this . isSingle ( ) ) this . setState ( { value : [ optionValue ] } , ( ) => this . toggleDropDown ( null , false ) ) ;
292297 else this . setState ( { value : [ ...this . state . value , optionValue ] } ) ;
293298 } ;
294299
@@ -406,7 +411,7 @@ export class MultiSelect extends React.Component {
406411 expanded = { s . expanded }
407412 disabled = { p . disabled }
408413 selected = { s . focusIndex === - 2 }
409- onClick = { ( ) => this . toggleDropDown ( ) }
414+ onClick = { this . toggleDropDown }
410415 >
411416 < div className = { u . classes ( 'Header__value' , {
412417 'Header__value--resetable' : p . resetable && ( ! ! s . value . length || ! ! p . resetTo . length ) ,
0 commit comments