Skip to content

Commit da64247

Browse files
committed
version 4.0.13
1 parent c4d02d7 commit da64247

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+223
-101
lines changed

Diff for: lib/select2-rails/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Select2
22
module Rails
3-
VERSION = '4.0.12'
3+
VERSION = '4.0.13'
44
end
55
end

Diff for: vendor/assets/javascripts/select2-full.js

+83-22
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Select2 4.0.12
2+
* Select2 4.0.13
33
* https://select2.github.io
44
*
55
* Released under the MIT license
@@ -1556,6 +1556,27 @@ S2.define('select2/selection/base',[
15561556
throw new Error('The `update` method must be defined in child classes.');
15571557
};
15581558

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+
15591580
return BaseSelection;
15601581
});
15611582

@@ -1706,7 +1727,7 @@ S2.define('select2/selection/multiple',[
17061727
'.select2-selection__choice__remove',
17071728
function (evt) {
17081729
// Ignore the event if it is disabled
1709-
if (self.options.get('disabled')) {
1730+
if (self.isDisabled()) {
17101731
return;
17111732
}
17121733

@@ -1867,7 +1888,7 @@ S2.define('select2/selection/allowClear',[
18671888

18681889
AllowClear.prototype._handleClear = function (_, evt) {
18691890
// Ignore the event if it is disabled
1870-
if (this.options.get('disabled')) {
1891+
if (this.isDisabled()) {
18711892
return;
18721893
}
18731894

@@ -1910,7 +1931,7 @@ S2.define('select2/selection/allowClear',[
19101931
}
19111932
}
19121933

1913-
this.$element.trigger('change');
1934+
this.$element.trigger('input').trigger('change');
19141935

19151936
this.trigger('toggle', {});
19161937
};
@@ -1933,7 +1954,7 @@ S2.define('select2/selection/allowClear',[
19331954
return;
19341955
}
19351956

1936-
var removeAll = this.options.get('translations').get('removeAllItems');
1957+
var removeAll = this.options.get('translations').get('removeAllItems');
19371958

19381959
var $remove = $(
19391960
'<span class="select2-selection__clear" title="' + removeAll() +'">' +
@@ -3201,7 +3222,7 @@ S2.define('select2/data/select',[
32013222
if ($(data.element).is('option')) {
32023223
data.element.selected = true;
32033224

3204-
this.$element.trigger('change');
3225+
this.$element.trigger('input').trigger('change');
32053226

32063227
return;
32073228
}
@@ -3222,13 +3243,13 @@ S2.define('select2/data/select',[
32223243
}
32233244

32243245
self.$element.val(val);
3225-
self.$element.trigger('change');
3246+
self.$element.trigger('input').trigger('change');
32263247
});
32273248
} else {
32283249
var val = data.id;
32293250

32303251
this.$element.val(val);
3231-
this.$element.trigger('change');
3252+
this.$element.trigger('input').trigger('change');
32323253
}
32333254
};
32343255

@@ -3244,7 +3265,7 @@ S2.define('select2/data/select',[
32443265
if ($(data.element).is('option')) {
32453266
data.element.selected = false;
32463267

3247-
this.$element.trigger('change');
3268+
this.$element.trigger('input').trigger('change');
32483269

32493270
return;
32503271
}
@@ -3262,7 +3283,7 @@ S2.define('select2/data/select',[
32623283

32633284
self.$element.val(val);
32643285

3265-
self.$element.trigger('change');
3286+
self.$element.trigger('input').trigger('change');
32663287
});
32673288
};
32683289

@@ -5545,8 +5566,8 @@ S2.define('select2/core',[
55455566

55465567
if (observer != null) {
55475568
this._observer = new observer(function (mutations) {
5548-
$.each(mutations, self._syncA);
5549-
$.each(mutations, self._syncS);
5569+
self._syncA();
5570+
self._syncS(null, mutations);
55505571
});
55515572
this._observer.observe(this.$element[0], {
55525573
attributes: true,
@@ -5668,7 +5689,7 @@ S2.define('select2/core',[
56685689
if (self.isOpen()) {
56695690
if (key === KEYS.ESC || key === KEYS.TAB ||
56705691
(key === KEYS.UP && evt.altKey)) {
5671-
self.close();
5692+
self.close(evt);
56725693

56735694
evt.preventDefault();
56745695
} else if (key === KEYS.ENTER) {
@@ -5702,7 +5723,7 @@ S2.define('select2/core',[
57025723
Select2.prototype._syncAttributes = function () {
57035724
this.options.set('disabled', this.$element.prop('disabled'));
57045725

5705-
if (this.options.get('disabled')) {
5726+
if (this.isDisabled()) {
57065727
if (this.isOpen()) {
57075728
this.close();
57085729
}
@@ -5713,7 +5734,7 @@ S2.define('select2/core',[
57135734
}
57145735
};
57155736

5716-
Select2.prototype._syncSubtree = function (evt, mutations) {
5737+
Select2.prototype._isChangeMutation = function (evt, mutations) {
57175738
var changed = false;
57185739
var self = this;
57195740

@@ -5741,7 +5762,22 @@ S2.define('select2/core',[
57415762
}
57425763
} else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
57435764
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+
});
57445774
}
5775+
return changed;
5776+
};
5777+
5778+
Select2.prototype._syncSubtree = function (evt, mutations) {
5779+
var changed = this._isChangeMutation(evt, mutations);
5780+
var self = this;
57455781

57465782
// Only re-pull the data if we think there is a change
57475783
if (changed) {
@@ -5792,7 +5828,7 @@ S2.define('select2/core',[
57925828
};
57935829

57945830
Select2.prototype.toggleDropdown = function () {
5795-
if (this.options.get('disabled')) {
5831+
if (this.isDisabled()) {
57965832
return;
57975833
}
57985834

@@ -5808,15 +5844,40 @@ S2.define('select2/core',[
58085844
return;
58095845
}
58105846

5847+
if (this.isDisabled()) {
5848+
return;
5849+
}
5850+
58115851
this.trigger('query', {});
58125852
};
58135853

5814-
Select2.prototype.close = function () {
5854+
Select2.prototype.close = function (evt) {
58155855
if (!this.isOpen()) {
58165856
return;
58175857
}
58185858

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');
58205881
};
58215882

58225883
Select2.prototype.isOpen = function () {
@@ -5893,7 +5954,7 @@ S2.define('select2/core',[
58935954
});
58945955
}
58955956

5896-
this.$element.val(newVal).trigger('change');
5957+
this.$element.val(newVal).trigger('input').trigger('change');
58975958
};
58985959

58995960
Select2.prototype.destroy = function () {
@@ -6228,13 +6289,13 @@ S2.define('select2/compat/inputData',[
62286289
});
62296290

62306291
this.$element.val(data.id);
6231-
this.$element.trigger('change');
6292+
this.$element.trigger('input').trigger('change');
62326293
} else {
62336294
var value = this.$element.val();
62346295
value += this._valueSeparator + data.id;
62356296

62366297
this.$element.val(value);
6237-
this.$element.trigger('change');
6298+
this.$element.trigger('input').trigger('change');
62386299
}
62396300
};
62406301

@@ -6257,7 +6318,7 @@ S2.define('select2/compat/inputData',[
62576318
}
62586319

62596320
self.$element.val(values.join(self._valueSeparator));
6260-
self.$element.trigger('change');
6321+
self.$element.trigger('input').trigger('change');
62616322
});
62626323
};
62636324

0 commit comments

Comments
 (0)