1
1
/*!
2
- * Select2 4.0.12
2
+ * Select2 4.0.13
3
3
* https://select2.github.io
4
4
*
5
5
* Released under the MIT license
@@ -1556,6 +1556,27 @@ S2.define('select2/selection/base',[
1556
1556
throw new Error ( 'The `update` method must be defined in child classes.' ) ;
1557
1557
} ;
1558
1558
1559
+ /**
1560
+ * Helper method to abstract the "enabled" (not "disabled") state of this
1561
+ * object.
1562
+ *
1563
+ * @return {true } if the instance is not disabled.
1564
+ * @return {false } if the instance is disabled.
1565
+ */
1566
+ BaseSelection . prototype . isEnabled = function ( ) {
1567
+ return ! this . isDisabled ( ) ;
1568
+ } ;
1569
+
1570
+ /**
1571
+ * Helper method to abstract the "disabled" state of this object.
1572
+ *
1573
+ * @return {true } if the disabled option is true.
1574
+ * @return {false } if the disabled option is false.
1575
+ */
1576
+ BaseSelection . prototype . isDisabled = function ( ) {
1577
+ return this . options . get ( 'disabled' ) ;
1578
+ } ;
1579
+
1559
1580
return BaseSelection ;
1560
1581
} ) ;
1561
1582
@@ -1706,7 +1727,7 @@ S2.define('select2/selection/multiple',[
1706
1727
'.select2-selection__choice__remove' ,
1707
1728
function ( evt ) {
1708
1729
// Ignore the event if it is disabled
1709
- if ( self . options . get ( 'disabled' ) ) {
1730
+ if ( self . isDisabled ( ) ) {
1710
1731
return ;
1711
1732
}
1712
1733
@@ -1867,7 +1888,7 @@ S2.define('select2/selection/allowClear',[
1867
1888
1868
1889
AllowClear . prototype . _handleClear = function ( _ , evt ) {
1869
1890
// Ignore the event if it is disabled
1870
- if ( this . options . get ( 'disabled' ) ) {
1891
+ if ( this . isDisabled ( ) ) {
1871
1892
return ;
1872
1893
}
1873
1894
@@ -1910,7 +1931,7 @@ S2.define('select2/selection/allowClear',[
1910
1931
}
1911
1932
}
1912
1933
1913
- this . $element . trigger ( 'change' ) ;
1934
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
1914
1935
1915
1936
this . trigger ( 'toggle' , { } ) ;
1916
1937
} ;
@@ -1933,7 +1954,7 @@ S2.define('select2/selection/allowClear',[
1933
1954
return ;
1934
1955
}
1935
1956
1936
- var removeAll = this . options . get ( 'translations' ) . get ( 'removeAllItems' ) ;
1957
+ var removeAll = this . options . get ( 'translations' ) . get ( 'removeAllItems' ) ;
1937
1958
1938
1959
var $remove = $ (
1939
1960
'<span class="select2-selection__clear" title="' + removeAll ( ) + '">' +
@@ -3201,7 +3222,7 @@ S2.define('select2/data/select',[
3201
3222
if ( $ ( data . element ) . is ( 'option' ) ) {
3202
3223
data . element . selected = true ;
3203
3224
3204
- this . $element . trigger ( 'change' ) ;
3225
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
3205
3226
3206
3227
return ;
3207
3228
}
@@ -3222,13 +3243,13 @@ S2.define('select2/data/select',[
3222
3243
}
3223
3244
3224
3245
self . $element . val ( val ) ;
3225
- self . $element . trigger ( 'change' ) ;
3246
+ self . $element . trigger ( 'input' ) . trigger ( ' change') ;
3226
3247
} ) ;
3227
3248
} else {
3228
3249
var val = data . id ;
3229
3250
3230
3251
this . $element . val ( val ) ;
3231
- this . $element . trigger ( 'change' ) ;
3252
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
3232
3253
}
3233
3254
} ;
3234
3255
@@ -3244,7 +3265,7 @@ S2.define('select2/data/select',[
3244
3265
if ( $ ( data . element ) . is ( 'option' ) ) {
3245
3266
data . element . selected = false ;
3246
3267
3247
- this . $element . trigger ( 'change' ) ;
3268
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
3248
3269
3249
3270
return ;
3250
3271
}
@@ -3262,7 +3283,7 @@ S2.define('select2/data/select',[
3262
3283
3263
3284
self . $element . val ( val ) ;
3264
3285
3265
- self . $element . trigger ( 'change' ) ;
3286
+ self . $element . trigger ( 'input' ) . trigger ( ' change') ;
3266
3287
} ) ;
3267
3288
} ;
3268
3289
@@ -5545,8 +5566,8 @@ S2.define('select2/core',[
5545
5566
5546
5567
if ( observer != null ) {
5547
5568
this . _observer = new observer ( function ( mutations ) {
5548
- $ . each ( mutations , self . _syncA ) ;
5549
- $ . each ( mutations , self . _syncS ) ;
5569
+ self . _syncA ( ) ;
5570
+ self . _syncS ( null , mutations ) ;
5550
5571
} ) ;
5551
5572
this . _observer . observe ( this . $element [ 0 ] , {
5552
5573
attributes : true ,
@@ -5668,7 +5689,7 @@ S2.define('select2/core',[
5668
5689
if ( self . isOpen ( ) ) {
5669
5690
if ( key === KEYS . ESC || key === KEYS . TAB ||
5670
5691
( key === KEYS . UP && evt . altKey ) ) {
5671
- self . close ( ) ;
5692
+ self . close ( evt ) ;
5672
5693
5673
5694
evt . preventDefault ( ) ;
5674
5695
} else if ( key === KEYS . ENTER ) {
@@ -5702,7 +5723,7 @@ S2.define('select2/core',[
5702
5723
Select2 . prototype . _syncAttributes = function ( ) {
5703
5724
this . options . set ( 'disabled' , this . $element . prop ( 'disabled' ) ) ;
5704
5725
5705
- if ( this . options . get ( 'disabled' ) ) {
5726
+ if ( this . isDisabled ( ) ) {
5706
5727
if ( this . isOpen ( ) ) {
5707
5728
this . close ( ) ;
5708
5729
}
@@ -5713,7 +5734,7 @@ S2.define('select2/core',[
5713
5734
}
5714
5735
} ;
5715
5736
5716
- Select2 . prototype . _syncSubtree = function ( evt , mutations ) {
5737
+ Select2 . prototype . _isChangeMutation = function ( evt , mutations ) {
5717
5738
var changed = false ;
5718
5739
var self = this ;
5719
5740
@@ -5741,7 +5762,22 @@ S2.define('select2/core',[
5741
5762
}
5742
5763
} else if ( mutations . removedNodes && mutations . removedNodes . length > 0 ) {
5743
5764
changed = true ;
5765
+ } else if ( $ . isArray ( mutations ) ) {
5766
+ $ . each ( mutations , function ( evt , mutation ) {
5767
+ if ( self . _isChangeMutation ( evt , mutation ) ) {
5768
+ // We've found a change mutation.
5769
+ // Let's escape from the loop and continue
5770
+ changed = true ;
5771
+ return false ;
5772
+ }
5773
+ } ) ;
5744
5774
}
5775
+ return changed ;
5776
+ } ;
5777
+
5778
+ Select2 . prototype . _syncSubtree = function ( evt , mutations ) {
5779
+ var changed = this . _isChangeMutation ( evt , mutations ) ;
5780
+ var self = this ;
5745
5781
5746
5782
// Only re-pull the data if we think there is a change
5747
5783
if ( changed ) {
@@ -5792,7 +5828,7 @@ S2.define('select2/core',[
5792
5828
} ;
5793
5829
5794
5830
Select2 . prototype . toggleDropdown = function ( ) {
5795
- if ( this . options . get ( 'disabled' ) ) {
5831
+ if ( this . isDisabled ( ) ) {
5796
5832
return ;
5797
5833
}
5798
5834
@@ -5808,15 +5844,40 @@ S2.define('select2/core',[
5808
5844
return ;
5809
5845
}
5810
5846
5847
+ if ( this . isDisabled ( ) ) {
5848
+ return ;
5849
+ }
5850
+
5811
5851
this . trigger ( 'query' , { } ) ;
5812
5852
} ;
5813
5853
5814
- Select2 . prototype . close = function ( ) {
5854
+ Select2 . prototype . close = function ( evt ) {
5815
5855
if ( ! this . isOpen ( ) ) {
5816
5856
return ;
5817
5857
}
5818
5858
5819
- this . trigger ( 'close' , { } ) ;
5859
+ this . trigger ( 'close' , { originalEvent : evt } ) ;
5860
+ } ;
5861
+
5862
+ /**
5863
+ * Helper method to abstract the "enabled" (not "disabled") state of this
5864
+ * object.
5865
+ *
5866
+ * @return {true } if the instance is not disabled.
5867
+ * @return {false } if the instance is disabled.
5868
+ */
5869
+ Select2 . prototype . isEnabled = function ( ) {
5870
+ return ! this . isDisabled ( ) ;
5871
+ } ;
5872
+
5873
+ /**
5874
+ * Helper method to abstract the "disabled" state of this object.
5875
+ *
5876
+ * @return {true } if the disabled option is true.
5877
+ * @return {false } if the disabled option is false.
5878
+ */
5879
+ Select2 . prototype . isDisabled = function ( ) {
5880
+ return this . options . get ( 'disabled' ) ;
5820
5881
} ;
5821
5882
5822
5883
Select2 . prototype . isOpen = function ( ) {
@@ -5893,7 +5954,7 @@ S2.define('select2/core',[
5893
5954
} ) ;
5894
5955
}
5895
5956
5896
- this . $element . val ( newVal ) . trigger ( 'change' ) ;
5957
+ this . $element . val ( newVal ) . trigger ( 'input' ) . trigger ( ' change') ;
5897
5958
} ;
5898
5959
5899
5960
Select2 . prototype . destroy = function ( ) {
@@ -6228,13 +6289,13 @@ S2.define('select2/compat/inputData',[
6228
6289
} ) ;
6229
6290
6230
6291
this . $element . val ( data . id ) ;
6231
- this . $element . trigger ( 'change' ) ;
6292
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
6232
6293
} else {
6233
6294
var value = this . $element . val ( ) ;
6234
6295
value += this . _valueSeparator + data . id ;
6235
6296
6236
6297
this . $element . val ( value ) ;
6237
- this . $element . trigger ( 'change' ) ;
6298
+ this . $element . trigger ( 'input' ) . trigger ( ' change') ;
6238
6299
}
6239
6300
} ;
6240
6301
@@ -6257,7 +6318,7 @@ S2.define('select2/compat/inputData',[
6257
6318
}
6258
6319
6259
6320
self . $element . val ( values . join ( self . _valueSeparator ) ) ;
6260
- self . $element . trigger ( 'change' ) ;
6321
+ self . $element . trigger ( 'input' ) . trigger ( ' change') ;
6261
6322
} ) ;
6262
6323
} ;
6263
6324
0 commit comments