@@ -47,7 +47,10 @@ var DEFAULT_SETTINGS = {
47
47
onReady : null ,
48
48
49
49
// Other settings
50
- idPrefix : "token-input-"
50
+ idPrefix : "token-input-" ,
51
+
52
+ // Keep track if the input is currently in disabled mode
53
+ disabled : false
51
54
} ;
52
55
53
56
// Default classes to use when theming
@@ -61,7 +64,8 @@ var DEFAULT_CLASSES = {
61
64
dropdownItem : "token-input-dropdown-item" ,
62
65
dropdownItem2 : "token-input-dropdown-item2" ,
63
66
selectedDropdownItem : "token-input-selected-dropdown-item" ,
64
- inputToken : "token-input-input-token"
67
+ inputToken : "token-input-input-token" ,
68
+ disabled : "token-input-disabled"
65
69
} ;
66
70
67
71
// Input box position "enum"
@@ -113,6 +117,10 @@ var methods = {
113
117
} ,
114
118
get : function ( ) {
115
119
return this . data ( "tokenInputObject" ) . getTokens ( ) ;
120
+ } ,
121
+ toggleDisabled : function ( disable ) {
122
+ this . data ( "tokenInputObject" ) . toggleDisabled ( disable ) ;
123
+ return this ;
116
124
}
117
125
}
118
126
@@ -188,6 +196,9 @@ $.TokenList = function (input, url_or_data, settings) {
188
196
} )
189
197
. attr ( "id" , settings . idPrefix + input . id )
190
198
. focus ( function ( ) {
199
+ if ( settings . disabled ) {
200
+ return false ;
201
+ } else
191
202
if ( settings . tokenLimit === null || settings . tokenLimit !== token_count ) {
192
203
show_dropdown_hint ( ) ;
193
204
}
@@ -371,6 +382,11 @@ $.TokenList = function (input, url_or_data, settings) {
371
382
} ) ;
372
383
}
373
384
385
+ // Check if widget should initialize as disabled
386
+ if ( settings . disabled ) {
387
+ toggleDisabled ( true ) ;
388
+ }
389
+
374
390
// Initialization is done
375
391
if ( $ . isFunction ( settings . onReady ) ) {
376
392
settings . onReady . call ( ) ;
@@ -414,10 +430,31 @@ $.TokenList = function (input, url_or_data, settings) {
414
430
return saved_tokens ;
415
431
}
416
432
433
+ this . toggleDisabled = function ( disable ) {
434
+ toggleDisabled ( disable ) ;
435
+ }
436
+
417
437
//
418
438
// Private functions
419
439
//
420
440
441
+ // Toggles the widget between enabled and disabled state, or according
442
+ // to the [disable] parameter.
443
+ function toggleDisabled ( disable ) {
444
+ if ( typeof disable === 'boolean' ) {
445
+ settings . disabled = disable
446
+ } else {
447
+ settings . disabled = ! settings . disabled ;
448
+ }
449
+ input_box . prop ( 'disabled' , settings . disabled ) ;
450
+ token_list . toggleClass ( settings . classes . disabled , settings . disabled ) ;
451
+ // if there is any token selected we deselect it
452
+ if ( selected_token ) {
453
+ deselect_token ( $ ( selected_token ) , POSITION . END ) ;
454
+ }
455
+ hidden_input . prop ( 'disabled' , settings . disabled ) ;
456
+ }
457
+
421
458
function checkTokenLimit ( ) {
422
459
if ( settings . tokenLimit !== null && token_count >= settings . tokenLimit ) {
423
460
input_box . hide ( ) ;
@@ -454,9 +491,11 @@ $.TokenList = function (input, url_or_data, settings) {
454
491
. addClass ( settings . classes . tokenDelete )
455
492
. appendTo ( this_token )
456
493
. click ( function ( ) {
457
- delete_token ( $ ( this ) . parent ( ) ) ;
458
- hidden_input . change ( ) ;
459
- return false ;
494
+ if ( ! settings . disabled ) {
495
+ delete_token ( $ ( this ) . parent ( ) ) ;
496
+ hidden_input . change ( ) ;
497
+ return false ;
498
+ }
460
499
} ) ;
461
500
462
501
// Store data on the token
@@ -525,14 +564,16 @@ $.TokenList = function (input, url_or_data, settings) {
525
564
526
565
// Select a token in the token list
527
566
function select_token ( token ) {
528
- token . addClass ( settings . classes . selectedToken ) ;
529
- selected_token = token . get ( 0 ) ;
567
+ if ( ! settings . disabled ) {
568
+ token . addClass ( settings . classes . selectedToken ) ;
569
+ selected_token = token . get ( 0 ) ;
530
570
531
- // Hide input box
532
- input_box . val ( "" ) ;
571
+ // Hide input box
572
+ input_box . val ( "" ) ;
533
573
534
- // Hide dropdown if it is visible (eg if we clicked to select token)
535
- hide_dropdown ( ) ;
574
+ // Hide dropdown if it is visible (eg if we clicked to select token)
575
+ hide_dropdown ( ) ;
576
+ }
536
577
}
537
578
538
579
// Deselect a token in the token list
@@ -857,4 +898,4 @@ $.TokenList.Cache = function (options) {
857
898
return data [ query ] ;
858
899
} ;
859
900
} ;
860
- } ( jQuery ) ) ;
901
+ } ( jQuery ) ) ;
0 commit comments