@@ -73,6 +73,7 @@ const CLASS_NAME_LABEL = 'label'
73
73
74
74
const Default = {
75
75
cleaner : true ,
76
+ disabled : false ,
76
77
multiple : true ,
77
78
placeholder : 'Select...' ,
78
79
options : false ,
@@ -88,6 +89,7 @@ const Default = {
88
89
89
90
const DefaultType = {
90
91
cleaner : 'boolean' ,
92
+ disabled : 'boolean' ,
91
93
multiple : 'boolean' ,
92
94
placeholder : 'string' ,
93
95
options : '(boolean|array)' ,
@@ -109,14 +111,13 @@ const DefaultType = {
109
111
110
112
class MultiSelect extends BaseComponent {
111
113
constructor ( element , config ) {
112
- super ( element )
114
+ super ( element , config )
113
115
114
116
this . _selectAllElement = null
115
117
this . _selectionElement = null
116
118
this . _selectionCleanerElement = null
117
119
this . _searchElement = null
118
120
this . _optionsElement = null
119
- this . _config = this . _getConfig ( config )
120
121
this . _clone = null
121
122
this . _options = this . _getOptions ( )
122
123
this . _search = ''
@@ -223,7 +224,9 @@ class MultiSelect extends BaseComponent {
223
224
224
225
_addEventListeners ( ) {
225
226
EventHandler . on ( this . _clone , EVENT_CLICK , ( ) => {
226
- this . show ( )
227
+ if ( ! this . _config . disabled ) {
228
+ this . show ( )
229
+ }
227
230
} )
228
231
229
232
EventHandler . on ( this . _searchElement , EVENT_KEYUP , ( ) => {
@@ -251,9 +254,11 @@ class MultiSelect extends BaseComponent {
251
254
} )
252
255
253
256
EventHandler . on ( this . _selectionCleanerElement , EVENT_CLICK , event => {
254
- event . preventDefault ( )
255
- event . stopPropagation ( )
256
- this . deselectAll ( )
257
+ if ( ! this . _config . disabled ) {
258
+ event . preventDefault ( )
259
+ event . stopPropagation ( )
260
+ this . deselectAll ( )
261
+ }
257
262
} )
258
263
259
264
EventHandler . on ( this . _optionsElement , EVENT_KEYDOWN , event => {
@@ -378,6 +383,10 @@ class MultiSelect extends BaseComponent {
378
383
const div = document . createElement ( 'div' )
379
384
div . classList . add ( CLASS_NAME_SELECT )
380
385
386
+ if ( this . _config . disabled ) {
387
+ this . _element . classList . add ( CLASS_NAME_DISABLED )
388
+ }
389
+
381
390
for ( const className of this . _getClassNames ( ) ) {
382
391
div . classList . add ( className )
383
392
}
@@ -431,6 +440,10 @@ class MultiSelect extends BaseComponent {
431
440
const input = document . createElement ( 'input' )
432
441
input . classList . add ( CLASS_NAME_SEARCH )
433
442
443
+ if ( this . _config . disabled ) {
444
+ input . disabled = true
445
+ }
446
+
434
447
this . _searchElement = input
435
448
this . _updateSearchSize ( )
436
449
@@ -516,11 +529,13 @@ class MultiSelect extends BaseComponent {
516
529
tag . append ( closeBtn )
517
530
518
531
EventHandler . on ( closeBtn , EVENT_CLICK , event => {
519
- event . preventDefault ( )
520
- event . stopPropagation ( )
532
+ if ( ! this . _config . disabled ) {
533
+ event . preventDefault ( )
534
+ event . stopPropagation ( )
521
535
522
- tag . remove ( )
523
- this . _deselectOption ( value )
536
+ tag . remove ( )
537
+ this . _deselectOption ( value )
538
+ }
524
539
} )
525
540
526
541
return tag
0 commit comments