@@ -13,6 +13,7 @@ class MultiSelect {
13
13
search : true ,
14
14
selectAll : true ,
15
15
listAll : true ,
16
+ closeListOnItemSelect : false ,
16
17
name : '' ,
17
18
width : '' ,
18
19
height : '' ,
@@ -95,7 +96,12 @@ class MultiSelect {
95
96
}
96
97
option . classList . add ( 'multi-select-selected' ) ;
97
98
if ( this . options . listAll === true || this . options . listAll === 'true' ) {
98
- headerElement . insertAdjacentHTML ( 'afterbegin' , `<span class="multi-select-header-option" data-value="${ option . dataset . value } ">${ option . querySelector ( '.multi-select-option-text' ) . innerHTML } </span>` ) ;
99
+ if ( this . element . querySelector ( '.multi-select-header-option' ) ) {
100
+ let opt = Array . from ( this . element . querySelectorAll ( '.multi-select-header-option' ) ) . pop ( ) ;
101
+ opt . insertAdjacentHTML ( 'afterend' , `<span class="multi-select-header-option" data-value="${ option . dataset . value } ">${ option . querySelector ( '.multi-select-option-text' ) . innerHTML } </span>` ) ;
102
+ } else {
103
+ headerElement . insertAdjacentHTML ( 'afterbegin' , `<span class="multi-select-header-option" data-value="${ option . dataset . value } ">${ option . querySelector ( '.multi-select-option-text' ) . innerHTML } </span>` ) ;
104
+ }
99
105
}
100
106
this . element . querySelector ( '.multi-select' ) . insertAdjacentHTML ( 'afterbegin' , `<input type="hidden" name="${ this . name } []" value="${ option . dataset . value } ">` ) ;
101
107
this . data . filter ( data => data . value == option . dataset . value ) [ 0 ] . selected = true ;
@@ -124,7 +130,9 @@ class MultiSelect {
124
130
this . element . querySelector ( '.multi-select-search' ) . value = '' ;
125
131
}
126
132
this . element . querySelectorAll ( '.multi-select-option' ) . forEach ( option => option . style . display = 'flex' ) ;
127
- headerElement . classList . remove ( 'multi-select-header-active' ) ;
133
+ if ( this . options . closeListOnItemSelect === true || this . options . closeListOnItemSelect === 'true' ) {
134
+ headerElement . classList . remove ( 'multi-select-header-active' ) ;
135
+ }
128
136
this . options . onChange ( option . dataset . value , option . querySelector ( '.multi-select-option-text' ) . innerHTML , option ) ;
129
137
if ( selected ) {
130
138
this . options . onSelect ( option . dataset . value , option . querySelector ( '.multi-select-option-text' ) . innerHTML , option ) ;
@@ -249,4 +257,4 @@ class MultiSelect {
249
257
}
250
258
251
259
}
252
- document . querySelectorAll ( '[data-multi-select]' ) . forEach ( select => new MultiSelect ( select ) ) ;
260
+ document . querySelectorAll ( '[data-multi-select]' ) . forEach ( select => new MultiSelect ( select ) ) ;
0 commit comments