select2-rails 4.0.9 → 4.1.0.pre.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/select2-rails/version.rb +1 -1
- data/vendor/assets/javascripts/select2-full.js +428 -702
- data/vendor/assets/javascripts/select2.js +426 -300
- data/vendor/assets/javascripts/select2_locale_af.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ar.js +1 -1
- data/vendor/assets/javascripts/select2_locale_az.js +1 -1
- data/vendor/assets/javascripts/select2_locale_bg.js +1 -1
- data/vendor/assets/javascripts/select2_locale_bn.js +1 -1
- data/vendor/assets/javascripts/select2_locale_bs.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ca.js +1 -1
- data/vendor/assets/javascripts/select2_locale_cs.js +1 -1
- data/vendor/assets/javascripts/select2_locale_da.js +1 -1
- data/vendor/assets/javascripts/select2_locale_de.js +2 -2
- data/vendor/assets/javascripts/select2_locale_dsb.js +1 -1
- data/vendor/assets/javascripts/select2_locale_el.js +1 -1
- data/vendor/assets/javascripts/select2_locale_en.js +2 -2
- data/vendor/assets/javascripts/select2_locale_eo.js +3 -0
- data/vendor/assets/javascripts/select2_locale_es.js +1 -1
- data/vendor/assets/javascripts/select2_locale_et.js +1 -1
- data/vendor/assets/javascripts/select2_locale_eu.js +1 -1
- data/vendor/assets/javascripts/select2_locale_fa.js +1 -1
- data/vendor/assets/javascripts/select2_locale_fi.js +1 -1
- data/vendor/assets/javascripts/select2_locale_fr.js +1 -1
- data/vendor/assets/javascripts/select2_locale_gl.js +1 -1
- data/vendor/assets/javascripts/select2_locale_he.js +1 -1
- data/vendor/assets/javascripts/select2_locale_hi.js +1 -1
- data/vendor/assets/javascripts/select2_locale_hr.js +1 -1
- data/vendor/assets/javascripts/select2_locale_hsb.js +1 -1
- data/vendor/assets/javascripts/select2_locale_hu.js +1 -1
- data/vendor/assets/javascripts/select2_locale_hy.js +1 -1
- data/vendor/assets/javascripts/select2_locale_id.js +1 -1
- data/vendor/assets/javascripts/select2_locale_is.js +1 -1
- data/vendor/assets/javascripts/select2_locale_it.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ja.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ka.js +1 -1
- data/vendor/assets/javascripts/select2_locale_km.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ko.js +1 -1
- data/vendor/assets/javascripts/select2_locale_lt.js +1 -1
- data/vendor/assets/javascripts/select2_locale_lv.js +1 -1
- data/vendor/assets/javascripts/select2_locale_mk.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ms.js +1 -1
- data/vendor/assets/javascripts/select2_locale_nb.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ne.js +1 -1
- data/vendor/assets/javascripts/select2_locale_nl.js +1 -1
- data/vendor/assets/javascripts/select2_locale_pa.js +3 -0
- data/vendor/assets/javascripts/select2_locale_pl.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ps.js +1 -1
- data/vendor/assets/javascripts/select2_locale_pt-BR.js +1 -1
- data/vendor/assets/javascripts/select2_locale_pt.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ro.js +1 -1
- data/vendor/assets/javascripts/select2_locale_ru.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sk.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sl.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sq.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sr-Cyrl.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sr.js +1 -1
- data/vendor/assets/javascripts/select2_locale_sv.js +1 -1
- data/vendor/assets/javascripts/select2_locale_th.js +1 -1
- data/vendor/assets/javascripts/select2_locale_tk.js +1 -1
- data/vendor/assets/javascripts/select2_locale_tr.js +1 -1
- data/vendor/assets/javascripts/select2_locale_uk.js +1 -1
- data/vendor/assets/javascripts/select2_locale_vi.js +1 -1
- data/vendor/assets/javascripts/select2_locale_zh-CN.js +1 -1
- data/vendor/assets/javascripts/select2_locale_zh-TW.js +1 -1
- data/vendor/assets/stylesheets/select2.css +103 -69
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc63c98004a81bcbada24c6f86fb04467186e4273d2caf2acbf834a4750bfa1b
|
4
|
+
data.tar.gz: 44b43109d599ba5e6f854e3cf3f5ae68a8ac7e40fe82a8335c1f43549325b63e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f0562e6f4a652e22168fb340d61a0e8dc4843140b3cf04988b66a8f9d51406b396d2b3787658d2981a501bfe4721177b27ffd2206b8683ed9b3695c2056d37f
|
7
|
+
data.tar.gz: 25f80632ed6fe45d70da0771086a037d7d717b88405d8332d3434a6d5d3080095f63325aa7f118b55237bb8fcfe0a15da6520c4e68a38d20111f4ed34252234d
|
data/README.md
CHANGED
@@ -56,7 +56,7 @@ To apply the language, pass whatever language you'd like to use to the [`languag
|
|
56
56
|
|
57
57
|
Possible languages:
|
58
58
|
|
59
|
-
af, ar, az, bg, bn, bs, ca, cs, da, de, dsb, el, en, es, et, eu, fa, fi, fr, gl, he, hi, hr, hsb, hu, hy, id, is, it, ja, ka, km, ko, lt, lv, mk, ms, nb, ne, nl, pl, ps, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-Cyrl, sv, th, tk, tr, uk, vi, zh-CN, zh-TW
|
59
|
+
af, ar, az, bg, bn, bs, ca, cs, da, de, dsb, el, en, eo, es, et, eu, fa, fi, fr, gl, he, hi, hr, hsb, hu, hy, id, is, it, ja, ka, km, ko, lt, lv, mk, ms, nb, ne, nl, pa, pl, ps, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-Cyrl, sv, th, tk, tr, uk, vi, zh-CN, zh-TW
|
60
60
|
|
61
61
|
## Example
|
62
62
|
Code [here](https://github.com/argerim/select_2_example)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Select2 4.0.
|
2
|
+
* Select2 4.1.0-beta.1
|
3
3
|
* https://select2.github.io
|
4
4
|
*
|
5
5
|
* Released under the MIT license
|
@@ -755,23 +755,6 @@ S2.define('select2/utils',[
|
|
755
755
|
});
|
756
756
|
};
|
757
757
|
|
758
|
-
// Append an array of jQuery nodes to a given element.
|
759
|
-
Utils.appendMany = function ($element, $nodes) {
|
760
|
-
// jQuery 1.7.x does not support $.fn.append() with an array
|
761
|
-
// Fall back to a jQuery object collection using $.fn.add()
|
762
|
-
if ($.fn.jquery.substr(0, 3) === '1.7') {
|
763
|
-
var $jqNodes = $();
|
764
|
-
|
765
|
-
$.map($nodes, function (node) {
|
766
|
-
$jqNodes = $jqNodes.add(node);
|
767
|
-
});
|
768
|
-
|
769
|
-
$nodes = $jqNodes;
|
770
|
-
}
|
771
|
-
|
772
|
-
$element.append($nodes);
|
773
|
-
};
|
774
|
-
|
775
758
|
// Cache objects in Utils.__cache instead of $.data (see #4346)
|
776
759
|
Utils.__cache = {};
|
777
760
|
|
@@ -779,20 +762,25 @@ S2.define('select2/utils',[
|
|
779
762
|
Utils.GetUniqueElementId = function (element) {
|
780
763
|
// Get a unique element Id. If element has no id,
|
781
764
|
// creates a new unique number, stores it in the id
|
782
|
-
// attribute and returns the new id.
|
783
|
-
// If an id already exists, it simply returns it.
|
765
|
+
// attribute and returns the new id with a prefix.
|
766
|
+
// If an id already exists, it simply returns it with a prefix.
|
784
767
|
|
785
768
|
var select2Id = element.getAttribute('data-select2-id');
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
769
|
+
|
770
|
+
if (select2Id != null) {
|
771
|
+
return select2Id;
|
772
|
+
}
|
773
|
+
|
774
|
+
// If element has id, use it.
|
775
|
+
if (element.id) {
|
776
|
+
select2Id = 'select2-data-' + element.id;
|
777
|
+
} else {
|
778
|
+
select2Id = 'select2-data-' + (++id).toString() +
|
779
|
+
'-' + Utils.generateChars(4);
|
795
780
|
}
|
781
|
+
|
782
|
+
element.setAttribute('data-select2-id', select2Id);
|
783
|
+
|
796
784
|
return select2Id;
|
797
785
|
};
|
798
786
|
|
@@ -836,6 +824,28 @@ S2.define('select2/utils',[
|
|
836
824
|
element.removeAttribute('data-select2-id');
|
837
825
|
};
|
838
826
|
|
827
|
+
Utils.copyNonInternalCssClasses = function (dest, src) {
|
828
|
+
var classes;
|
829
|
+
|
830
|
+
var destinationClasses = dest.getAttribute('class').trim().split(/\s+/);
|
831
|
+
|
832
|
+
destinationClasses = destinationClasses.filter(function (clazz) {
|
833
|
+
// Save all Select2 classes
|
834
|
+
return clazz.indexOf('select2-') === 0;
|
835
|
+
});
|
836
|
+
|
837
|
+
var sourceClasses = src.getAttribute('class').trim().split(/\s+/);
|
838
|
+
|
839
|
+
sourceClasses = sourceClasses.filter(function (clazz) {
|
840
|
+
// Only copy non-Select2 classes
|
841
|
+
return clazz.indexOf('select2-') !== 0;
|
842
|
+
});
|
843
|
+
|
844
|
+
var replacements = destinationClasses.concat(sourceClasses);
|
845
|
+
|
846
|
+
dest.setAttribute('class', replacements.join(' '));
|
847
|
+
};
|
848
|
+
|
839
849
|
return Utils;
|
840
850
|
});
|
841
851
|
|
@@ -940,9 +950,9 @@ S2.define('select2/results',[
|
|
940
950
|
|
941
951
|
Results.prototype.highlightFirstItem = function () {
|
942
952
|
var $options = this.$results
|
943
|
-
.find('.select2-results__option
|
953
|
+
.find('.select2-results__option--selectable');
|
944
954
|
|
945
|
-
var $selected = $options.filter('
|
955
|
+
var $selected = $options.filter('.select2-results__option--selected');
|
946
956
|
|
947
957
|
// Check if there are any selected options
|
948
958
|
if ($selected.length > 0) {
|
@@ -961,12 +971,12 @@ S2.define('select2/results',[
|
|
961
971
|
var self = this;
|
962
972
|
|
963
973
|
this.data.current(function (selected) {
|
964
|
-
var selectedIds =
|
974
|
+
var selectedIds = selected.map(function (s) {
|
965
975
|
return s.id.toString();
|
966
976
|
});
|
967
977
|
|
968
978
|
var $options = self.$results
|
969
|
-
.find('.select2-results__option
|
979
|
+
.find('.select2-results__option--selectable');
|
970
980
|
|
971
981
|
$options.each(function () {
|
972
982
|
var $option = $(this);
|
@@ -977,9 +987,11 @@ S2.define('select2/results',[
|
|
977
987
|
var id = '' + item.id;
|
978
988
|
|
979
989
|
if ((item.element != null && item.element.selected) ||
|
980
|
-
(item.element == null &&
|
990
|
+
(item.element == null && selectedIds.indexOf(id) > -1)) {
|
991
|
+
this.classList.add('select2-results__option--selected');
|
981
992
|
$option.attr('aria-selected', 'true');
|
982
993
|
} else {
|
994
|
+
this.classList.remove('select2-results__option--selected');
|
983
995
|
$option.attr('aria-selected', 'false');
|
984
996
|
}
|
985
997
|
});
|
@@ -1009,11 +1021,11 @@ S2.define('select2/results',[
|
|
1009
1021
|
|
1010
1022
|
Results.prototype.option = function (data) {
|
1011
1023
|
var option = document.createElement('li');
|
1012
|
-
option.
|
1024
|
+
option.classList.add('select2-results__option');
|
1025
|
+
option.classList.add('select2-results__option--selectable');
|
1013
1026
|
|
1014
1027
|
var attrs = {
|
1015
|
-
'role': 'option'
|
1016
|
-
'aria-selected': 'false'
|
1028
|
+
'role': 'option'
|
1017
1029
|
};
|
1018
1030
|
|
1019
1031
|
var matches = window.Element.prototype.matches ||
|
@@ -1022,12 +1034,14 @@ S2.define('select2/results',[
|
|
1022
1034
|
|
1023
1035
|
if ((data.element != null && matches.call(data.element, ':disabled')) ||
|
1024
1036
|
(data.element == null && data.disabled)) {
|
1025
|
-
delete attrs['aria-selected'];
|
1026
1037
|
attrs['aria-disabled'] = 'true';
|
1038
|
+
|
1039
|
+
option.classList.remove('select2-results__option--selectable');
|
1040
|
+
option.classList.add('select2-results__option--disabled');
|
1027
1041
|
}
|
1028
1042
|
|
1029
1043
|
if (data.id == null) {
|
1030
|
-
|
1044
|
+
option.classList.remove('select2-results__option--selectable');
|
1031
1045
|
}
|
1032
1046
|
|
1033
1047
|
if (data._resultId != null) {
|
@@ -1041,7 +1055,9 @@ S2.define('select2/results',[
|
|
1041
1055
|
if (data.children) {
|
1042
1056
|
attrs.role = 'group';
|
1043
1057
|
attrs['aria-label'] = data.text;
|
1044
|
-
|
1058
|
+
|
1059
|
+
option.classList.remove('select2-results__option--selectable');
|
1060
|
+
option.classList.add('select2-results__option--group');
|
1045
1061
|
}
|
1046
1062
|
|
1047
1063
|
for (var attr in attrs) {
|
@@ -1056,7 +1072,6 @@ S2.define('select2/results',[
|
|
1056
1072
|
var label = document.createElement('strong');
|
1057
1073
|
label.className = 'select2-results__group';
|
1058
1074
|
|
1059
|
-
var $label = $(label);
|
1060
1075
|
this.template(data, label);
|
1061
1076
|
|
1062
1077
|
var $children = [];
|
@@ -1175,7 +1190,7 @@ S2.define('select2/results',[
|
|
1175
1190
|
|
1176
1191
|
var data = Utils.GetData($highlighted[0], 'data');
|
1177
1192
|
|
1178
|
-
if ($highlighted.
|
1193
|
+
if ($highlighted.hasClass('select2-results__option--selected')) {
|
1179
1194
|
self.trigger('close', {});
|
1180
1195
|
} else {
|
1181
1196
|
self.trigger('select', {
|
@@ -1187,7 +1202,7 @@ S2.define('select2/results',[
|
|
1187
1202
|
container.on('results:previous', function () {
|
1188
1203
|
var $highlighted = self.getHighlightedResults();
|
1189
1204
|
|
1190
|
-
var $options = self.$results.find('
|
1205
|
+
var $options = self.$results.find('.select2-results__option--selectable');
|
1191
1206
|
|
1192
1207
|
var currentIndex = $options.index($highlighted);
|
1193
1208
|
|
@@ -1222,7 +1237,7 @@ S2.define('select2/results',[
|
|
1222
1237
|
container.on('results:next', function () {
|
1223
1238
|
var $highlighted = self.getHighlightedResults();
|
1224
1239
|
|
1225
|
-
var $options = self.$results.find('
|
1240
|
+
var $options = self.$results.find('.select2-results__option--selectable');
|
1226
1241
|
|
1227
1242
|
var currentIndex = $options.index($highlighted);
|
1228
1243
|
|
@@ -1250,7 +1265,8 @@ S2.define('select2/results',[
|
|
1250
1265
|
});
|
1251
1266
|
|
1252
1267
|
container.on('results:focus', function (params) {
|
1253
|
-
params.element.
|
1268
|
+
params.element[0].classList.add('select2-results__option--highlighted');
|
1269
|
+
params.element[0].setAttribute('aria-selected', 'true');
|
1254
1270
|
});
|
1255
1271
|
|
1256
1272
|
container.on('results:message', function (params) {
|
@@ -1282,13 +1298,13 @@ S2.define('select2/results',[
|
|
1282
1298
|
});
|
1283
1299
|
}
|
1284
1300
|
|
1285
|
-
this.$results.on('mouseup', '.select2-results__option
|
1301
|
+
this.$results.on('mouseup', '.select2-results__option--selectable',
|
1286
1302
|
function (evt) {
|
1287
1303
|
var $this = $(this);
|
1288
1304
|
|
1289
1305
|
var data = Utils.GetData(this, 'data');
|
1290
1306
|
|
1291
|
-
if ($this.
|
1307
|
+
if ($this.hasClass('select2-results__option--selected')) {
|
1292
1308
|
if (self.options.get('multiple')) {
|
1293
1309
|
self.trigger('unselect', {
|
1294
1310
|
originalEvent: evt,
|
@@ -1307,12 +1323,13 @@ S2.define('select2/results',[
|
|
1307
1323
|
});
|
1308
1324
|
});
|
1309
1325
|
|
1310
|
-
this.$results.on('mouseenter', '.select2-results__option
|
1326
|
+
this.$results.on('mouseenter', '.select2-results__option--selectable',
|
1311
1327
|
function (evt) {
|
1312
1328
|
var data = Utils.GetData(this, 'data');
|
1313
1329
|
|
1314
1330
|
self.getHighlightedResults()
|
1315
|
-
.removeClass('select2-results__option--highlighted')
|
1331
|
+
.removeClass('select2-results__option--highlighted')
|
1332
|
+
.attr('aria-selected', 'false');
|
1316
1333
|
|
1317
1334
|
self.trigger('results:focus', {
|
1318
1335
|
data: data,
|
@@ -1339,7 +1356,7 @@ S2.define('select2/results',[
|
|
1339
1356
|
return;
|
1340
1357
|
}
|
1341
1358
|
|
1342
|
-
var $options = this.$results.find('
|
1359
|
+
var $options = this.$results.find('.select2-results__option--selectable');
|
1343
1360
|
|
1344
1361
|
var currentIndex = $options.index($highlighted);
|
1345
1362
|
|
@@ -1556,6 +1573,27 @@ S2.define('select2/selection/base',[
|
|
1556
1573
|
throw new Error('The `update` method must be defined in child classes.');
|
1557
1574
|
};
|
1558
1575
|
|
1576
|
+
/**
|
1577
|
+
* Helper method to abstract the "enabled" (not "disabled") state of this
|
1578
|
+
* object.
|
1579
|
+
*
|
1580
|
+
* @return {true} if the instance is not disabled.
|
1581
|
+
* @return {false} if the instance is disabled.
|
1582
|
+
*/
|
1583
|
+
BaseSelection.prototype.isEnabled = function () {
|
1584
|
+
return !this.isDisabled();
|
1585
|
+
};
|
1586
|
+
|
1587
|
+
/**
|
1588
|
+
* Helper method to abstract the "disabled" state of this object.
|
1589
|
+
*
|
1590
|
+
* @return {true} if the disabled option is true.
|
1591
|
+
* @return {false} if the disabled option is false.
|
1592
|
+
*/
|
1593
|
+
BaseSelection.prototype.isDisabled = function () {
|
1594
|
+
return this.options.get('disabled');
|
1595
|
+
};
|
1596
|
+
|
1559
1597
|
return BaseSelection;
|
1560
1598
|
});
|
1561
1599
|
|
@@ -1574,7 +1612,7 @@ S2.define('select2/selection/single',[
|
|
1574
1612
|
SingleSelection.prototype.render = function () {
|
1575
1613
|
var $selection = SingleSelection.__super__.render.call(this);
|
1576
1614
|
|
1577
|
-
$selection.
|
1615
|
+
$selection[0].classList.add('select2-selection--single');
|
1578
1616
|
|
1579
1617
|
$selection.html(
|
1580
1618
|
'<span class="select2-selection__rendered"></span>' +
|
@@ -1681,7 +1719,7 @@ S2.define('select2/selection/multiple',[
|
|
1681
1719
|
MultipleSelection.prototype.render = function () {
|
1682
1720
|
var $selection = MultipleSelection.__super__.render.call(this);
|
1683
1721
|
|
1684
|
-
$selection.
|
1722
|
+
$selection[0].classList.add('select2-selection--multiple');
|
1685
1723
|
|
1686
1724
|
$selection.html(
|
1687
1725
|
'<ul class="select2-selection__rendered"></ul>'
|
@@ -1695,6 +1733,9 @@ S2.define('select2/selection/multiple',[
|
|
1695
1733
|
|
1696
1734
|
MultipleSelection.__super__.bind.apply(this, arguments);
|
1697
1735
|
|
1736
|
+
var id = container.id + '-container';
|
1737
|
+
this.$selection.find('.select2-selection__rendered').attr('id', id);
|
1738
|
+
|
1698
1739
|
this.$selection.on('click', function (evt) {
|
1699
1740
|
self.trigger('toggle', {
|
1700
1741
|
originalEvent: evt
|
@@ -1706,7 +1747,7 @@ S2.define('select2/selection/multiple',[
|
|
1706
1747
|
'.select2-selection__choice__remove',
|
1707
1748
|
function (evt) {
|
1708
1749
|
// Ignore the event if it is disabled
|
1709
|
-
if (self.
|
1750
|
+
if (self.isDisabled()) {
|
1710
1751
|
return;
|
1711
1752
|
}
|
1712
1753
|
|
@@ -1721,6 +1762,19 @@ S2.define('select2/selection/multiple',[
|
|
1721
1762
|
});
|
1722
1763
|
}
|
1723
1764
|
);
|
1765
|
+
|
1766
|
+
this.$selection.on(
|
1767
|
+
'keydown',
|
1768
|
+
'.select2-selection__choice__remove',
|
1769
|
+
function (evt) {
|
1770
|
+
// Ignore the event if it is disabled
|
1771
|
+
if (self.isDisabled()) {
|
1772
|
+
return;
|
1773
|
+
}
|
1774
|
+
|
1775
|
+
evt.stopPropagation();
|
1776
|
+
}
|
1777
|
+
);
|
1724
1778
|
};
|
1725
1779
|
|
1726
1780
|
MultipleSelection.prototype.clear = function () {
|
@@ -1739,9 +1793,11 @@ S2.define('select2/selection/multiple',[
|
|
1739
1793
|
MultipleSelection.prototype.selectionContainer = function () {
|
1740
1794
|
var $container = $(
|
1741
1795
|
'<li class="select2-selection__choice">' +
|
1742
|
-
'<
|
1743
|
-
|
1744
|
-
|
1796
|
+
'<button type="button" class="select2-selection__choice__remove" ' +
|
1797
|
+
'tabindex="-1">' +
|
1798
|
+
'<span aria-hidden="true">×</span>' +
|
1799
|
+
'</button>' +
|
1800
|
+
'<span class="select2-selection__choice__display"></span>' +
|
1745
1801
|
'</li>'
|
1746
1802
|
);
|
1747
1803
|
|
@@ -1757,13 +1813,26 @@ S2.define('select2/selection/multiple',[
|
|
1757
1813
|
|
1758
1814
|
var $selections = [];
|
1759
1815
|
|
1816
|
+
var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')
|
1817
|
+
.attr('id') + '-choice-';
|
1818
|
+
|
1760
1819
|
for (var d = 0; d < data.length; d++) {
|
1761
1820
|
var selection = data[d];
|
1762
1821
|
|
1763
1822
|
var $selection = this.selectionContainer();
|
1764
1823
|
var formatted = this.display(selection, $selection);
|
1765
1824
|
|
1766
|
-
|
1825
|
+
var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';
|
1826
|
+
|
1827
|
+
if (selection.id) {
|
1828
|
+
selectionId += selection.id;
|
1829
|
+
} else {
|
1830
|
+
selectionId += Utils.generateChars(4);
|
1831
|
+
}
|
1832
|
+
|
1833
|
+
$selection.find('.select2-selection__choice__display')
|
1834
|
+
.append(formatted)
|
1835
|
+
.attr('id', selectionId);
|
1767
1836
|
|
1768
1837
|
var title = selection.title || selection.text;
|
1769
1838
|
|
@@ -1771,6 +1840,14 @@ S2.define('select2/selection/multiple',[
|
|
1771
1840
|
$selection.attr('title', title);
|
1772
1841
|
}
|
1773
1842
|
|
1843
|
+
var removeItem = this.options.get('translations').get('removeItem');
|
1844
|
+
|
1845
|
+
var $remove = $selection.find('.select2-selection__choice__remove');
|
1846
|
+
|
1847
|
+
$remove.attr('title', removeItem());
|
1848
|
+
$remove.attr('aria-label', removeItem());
|
1849
|
+
$remove.attr('aria-describedby', selectionId);
|
1850
|
+
|
1774
1851
|
Utils.StoreData($selection[0], 'data', selection);
|
1775
1852
|
|
1776
1853
|
$selections.push($selection);
|
@@ -1778,15 +1855,15 @@ S2.define('select2/selection/multiple',[
|
|
1778
1855
|
|
1779
1856
|
var $rendered = this.$selection.find('.select2-selection__rendered');
|
1780
1857
|
|
1781
|
-
|
1858
|
+
$rendered.append($selections);
|
1782
1859
|
};
|
1783
1860
|
|
1784
1861
|
return MultipleSelection;
|
1785
1862
|
});
|
1786
1863
|
|
1787
1864
|
S2.define('select2/selection/placeholder',[
|
1788
|
-
|
1789
|
-
], function (
|
1865
|
+
|
1866
|
+
], function () {
|
1790
1867
|
function Placeholder (decorated, $element, options) {
|
1791
1868
|
this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
|
1792
1869
|
|
@@ -1808,8 +1885,8 @@ S2.define('select2/selection/placeholder',[
|
|
1808
1885
|
var $placeholder = this.selectionContainer();
|
1809
1886
|
|
1810
1887
|
$placeholder.html(this.display(placeholder));
|
1811
|
-
$placeholder.
|
1812
|
-
|
1888
|
+
$placeholder[0].classList.add('select2-selection__placeholder');
|
1889
|
+
$placeholder[0].classList.remove('select2-selection__choice');
|
1813
1890
|
|
1814
1891
|
return $placeholder;
|
1815
1892
|
};
|
@@ -1867,7 +1944,7 @@ S2.define('select2/selection/allowClear',[
|
|
1867
1944
|
|
1868
1945
|
AllowClear.prototype._handleClear = function (_, evt) {
|
1869
1946
|
// Ignore the event if it is disabled
|
1870
|
-
if (this.
|
1947
|
+
if (this.isDisabled()) {
|
1871
1948
|
return;
|
1872
1949
|
}
|
1873
1950
|
|
@@ -1910,7 +1987,7 @@ S2.define('select2/selection/allowClear',[
|
|
1910
1987
|
}
|
1911
1988
|
}
|
1912
1989
|
|
1913
|
-
this.$element.trigger('change');
|
1990
|
+
this.$element.trigger('input').trigger('change');
|
1914
1991
|
|
1915
1992
|
this.trigger('toggle', {});
|
1916
1993
|
};
|
@@ -1928,21 +2005,29 @@ S2.define('select2/selection/allowClear',[
|
|
1928
2005
|
AllowClear.prototype.update = function (decorated, data) {
|
1929
2006
|
decorated.call(this, data);
|
1930
2007
|
|
2008
|
+
this.$selection.find('.select2-selection__clear').remove();
|
2009
|
+
|
1931
2010
|
if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
|
1932
2011
|
data.length === 0) {
|
1933
2012
|
return;
|
1934
2013
|
}
|
1935
2014
|
|
1936
|
-
var
|
2015
|
+
var selectionId = this.$selection.find('.select2-selection__rendered')
|
2016
|
+
.attr('id');
|
2017
|
+
|
2018
|
+
var removeAll = this.options.get('translations').get('removeAllItems');
|
1937
2019
|
|
1938
2020
|
var $remove = $(
|
1939
|
-
'<
|
1940
|
-
'
|
1941
|
-
'</
|
2021
|
+
'<button type="button" class="select2-selection__clear" tabindex="-1">' +
|
2022
|
+
'<span aria-hidden="true">×</span>' +
|
2023
|
+
'</button>'
|
1942
2024
|
);
|
2025
|
+
$remove.attr('title', removeAll());
|
2026
|
+
$remove.attr('aria-label', removeAll());
|
2027
|
+
$remove.attr('aria-describedby', selectionId);
|
1943
2028
|
Utils.StoreData($remove[0], 'data', data);
|
1944
2029
|
|
1945
|
-
this.$selection.
|
2030
|
+
this.$selection.prepend($remove);
|
1946
2031
|
};
|
1947
2032
|
|
1948
2033
|
return AllowClear;
|
@@ -1959,19 +2044,22 @@ S2.define('select2/selection/search',[
|
|
1959
2044
|
|
1960
2045
|
Search.prototype.render = function (decorated) {
|
1961
2046
|
var $search = $(
|
1962
|
-
'<
|
2047
|
+
'<span class="select2-search select2-search--inline">' +
|
1963
2048
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
1964
|
-
'
|
2049
|
+
' autocorrect="off" autocapitalize="none"' +
|
1965
2050
|
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
1966
|
-
'</
|
2051
|
+
'</span>'
|
1967
2052
|
);
|
1968
2053
|
|
1969
2054
|
this.$searchContainer = $search;
|
1970
2055
|
this.$search = $search.find('input');
|
1971
2056
|
|
2057
|
+
this.$search.prop('autocomplete', this.options.get('autocomplete'));
|
2058
|
+
|
1972
2059
|
var $rendered = decorated.call(this);
|
1973
2060
|
|
1974
2061
|
this._transferTabIndex();
|
2062
|
+
$rendered.append(this.$searchContainer);
|
1975
2063
|
|
1976
2064
|
return $rendered;
|
1977
2065
|
};
|
@@ -1980,9 +2068,12 @@ S2.define('select2/selection/search',[
|
|
1980
2068
|
var self = this;
|
1981
2069
|
|
1982
2070
|
var resultsId = container.id + '-results';
|
2071
|
+
var selectionId = container.id + '-container';
|
1983
2072
|
|
1984
2073
|
decorated.call(this, container, $container);
|
1985
2074
|
|
2075
|
+
self.$search.attr('aria-describedby', selectionId);
|
2076
|
+
|
1986
2077
|
container.on('open', function () {
|
1987
2078
|
self.$search.attr('aria-controls', resultsId);
|
1988
2079
|
self.$search.trigger('focus');
|
@@ -1990,6 +2081,7 @@ S2.define('select2/selection/search',[
|
|
1990
2081
|
|
1991
2082
|
container.on('close', function () {
|
1992
2083
|
self.$search.val('');
|
2084
|
+
self.resizeSearch();
|
1993
2085
|
self.$search.removeAttr('aria-controls');
|
1994
2086
|
self.$search.removeAttr('aria-activedescendant');
|
1995
2087
|
self.$search.trigger('focus');
|
@@ -2035,8 +2127,8 @@ S2.define('select2/selection/search',[
|
|
2035
2127
|
var key = evt.which;
|
2036
2128
|
|
2037
2129
|
if (key === KEYS.BACKSPACE && self.$search.val() === '') {
|
2038
|
-
var $previousChoice = self.$
|
2039
|
-
.
|
2130
|
+
var $previousChoice = self.$selection
|
2131
|
+
.find('.select2-selection__choice').last();
|
2040
2132
|
|
2041
2133
|
if ($previousChoice.length > 0) {
|
2042
2134
|
var item = Utils.GetData($previousChoice[0], 'data');
|
@@ -2134,9 +2226,6 @@ S2.define('select2/selection/search',[
|
|
2134
2226
|
|
2135
2227
|
decorated.call(this, data);
|
2136
2228
|
|
2137
|
-
this.$selection.find('.select2-selection__rendered')
|
2138
|
-
.append(this.$searchContainer);
|
2139
|
-
|
2140
2229
|
this.resizeSearch();
|
2141
2230
|
if (searchHadFocus) {
|
2142
2231
|
this.$search.trigger('focus');
|
@@ -2169,11 +2258,9 @@ S2.define('select2/selection/search',[
|
|
2169
2258
|
Search.prototype.resizeSearch = function () {
|
2170
2259
|
this.$search.css('width', '25px');
|
2171
2260
|
|
2172
|
-
var width = '';
|
2261
|
+
var width = '100%';
|
2173
2262
|
|
2174
|
-
if (this.$search.attr('placeholder')
|
2175
|
-
width = this.$selection.find('.select2-selection__rendered').width();
|
2176
|
-
} else {
|
2263
|
+
if (this.$search.attr('placeholder') === '') {
|
2177
2264
|
var minimumWidth = this.$search.val().length + 1;
|
2178
2265
|
|
2179
2266
|
width = (minimumWidth * 0.75) + 'em';
|
@@ -2185,6 +2272,30 @@ S2.define('select2/selection/search',[
|
|
2185
2272
|
return Search;
|
2186
2273
|
});
|
2187
2274
|
|
2275
|
+
S2.define('select2/selection/selectionCss',[
|
2276
|
+
'../utils'
|
2277
|
+
], function (Utils) {
|
2278
|
+
function SelectionCSS () { }
|
2279
|
+
|
2280
|
+
SelectionCSS.prototype.render = function (decorated) {
|
2281
|
+
var $selection = decorated.call(this);
|
2282
|
+
|
2283
|
+
var selectionCssClass = this.options.get('selectionCssClass') || '';
|
2284
|
+
|
2285
|
+
if (selectionCssClass.indexOf(':all:') !== -1) {
|
2286
|
+
selectionCssClass = selectionCssClass.replace(':all:', '');
|
2287
|
+
|
2288
|
+
Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);
|
2289
|
+
}
|
2290
|
+
|
2291
|
+
$selection.addClass(selectionCssClass);
|
2292
|
+
|
2293
|
+
return $selection;
|
2294
|
+
};
|
2295
|
+
|
2296
|
+
return SelectionCSS;
|
2297
|
+
});
|
2298
|
+
|
2188
2299
|
S2.define('select2/selection/eventRelay',[
|
2189
2300
|
'jquery'
|
2190
2301
|
], function ($) {
|
@@ -2208,7 +2319,7 @@ S2.define('select2/selection/eventRelay',[
|
|
2208
2319
|
|
2209
2320
|
container.on('*', function (name, params) {
|
2210
2321
|
// Ignore events that should not be relayed
|
2211
|
-
if (
|
2322
|
+
if (relayEvents.indexOf(name) === -1) {
|
2212
2323
|
return;
|
2213
2324
|
}
|
2214
2325
|
|
@@ -2223,7 +2334,7 @@ S2.define('select2/selection/eventRelay',[
|
|
2223
2334
|
self.$element.trigger(evt);
|
2224
2335
|
|
2225
2336
|
// Only handle preventable events if it was one
|
2226
|
-
if (
|
2337
|
+
if (preventableEvents.indexOf(name) === -1) {
|
2227
2338
|
return;
|
2228
2339
|
}
|
2229
2340
|
|
@@ -3178,16 +3289,14 @@ S2.define('select2/data/select',[
|
|
3178
3289
|
Utils.Extend(SelectAdapter, BaseAdapter);
|
3179
3290
|
|
3180
3291
|
SelectAdapter.prototype.current = function (callback) {
|
3181
|
-
var data = [];
|
3182
3292
|
var self = this;
|
3183
3293
|
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
});
|
3294
|
+
var data = Array.prototype.map.call(
|
3295
|
+
this.$element[0].querySelectorAll(':checked'),
|
3296
|
+
function (selectedElement) {
|
3297
|
+
return self.item($(selectedElement));
|
3298
|
+
}
|
3299
|
+
);
|
3191
3300
|
|
3192
3301
|
callback(data);
|
3193
3302
|
};
|
@@ -3198,10 +3307,12 @@ S2.define('select2/data/select',[
|
|
3198
3307
|
data.selected = true;
|
3199
3308
|
|
3200
3309
|
// If data.element is a DOM node, use it instead
|
3201
|
-
if (
|
3310
|
+
if (
|
3311
|
+
data.element != null && data.element.tagName.toLowerCase() === 'option'
|
3312
|
+
) {
|
3202
3313
|
data.element.selected = true;
|
3203
3314
|
|
3204
|
-
this.$element.trigger('change');
|
3315
|
+
this.$element.trigger('input').trigger('change');
|
3205
3316
|
|
3206
3317
|
return;
|
3207
3318
|
}
|
@@ -3216,19 +3327,19 @@ S2.define('select2/data/select',[
|
|
3216
3327
|
for (var d = 0; d < data.length; d++) {
|
3217
3328
|
var id = data[d].id;
|
3218
3329
|
|
3219
|
-
if (
|
3330
|
+
if (val.indexOf(id) === -1) {
|
3220
3331
|
val.push(id);
|
3221
3332
|
}
|
3222
3333
|
}
|
3223
3334
|
|
3224
3335
|
self.$element.val(val);
|
3225
|
-
self.$element.trigger('change');
|
3336
|
+
self.$element.trigger('input').trigger('change');
|
3226
3337
|
});
|
3227
3338
|
} else {
|
3228
3339
|
var val = data.id;
|
3229
3340
|
|
3230
3341
|
this.$element.val(val);
|
3231
|
-
this.$element.trigger('change');
|
3342
|
+
this.$element.trigger('input').trigger('change');
|
3232
3343
|
}
|
3233
3344
|
};
|
3234
3345
|
|
@@ -3241,10 +3352,13 @@ S2.define('select2/data/select',[
|
|
3241
3352
|
|
3242
3353
|
data.selected = false;
|
3243
3354
|
|
3244
|
-
if (
|
3355
|
+
if (
|
3356
|
+
data.element != null &&
|
3357
|
+
data.element.tagName.toLowerCase() === 'option'
|
3358
|
+
) {
|
3245
3359
|
data.element.selected = false;
|
3246
3360
|
|
3247
|
-
this.$element.trigger('change');
|
3361
|
+
this.$element.trigger('input').trigger('change');
|
3248
3362
|
|
3249
3363
|
return;
|
3250
3364
|
}
|
@@ -3255,14 +3369,14 @@ S2.define('select2/data/select',[
|
|
3255
3369
|
for (var d = 0; d < currentData.length; d++) {
|
3256
3370
|
var id = currentData[d].id;
|
3257
3371
|
|
3258
|
-
if (id !== data.id &&
|
3372
|
+
if (id !== data.id && val.indexOf(id) === -1) {
|
3259
3373
|
val.push(id);
|
3260
3374
|
}
|
3261
3375
|
}
|
3262
3376
|
|
3263
3377
|
self.$element.val(val);
|
3264
3378
|
|
3265
|
-
self.$element.trigger('change');
|
3379
|
+
self.$element.trigger('input').trigger('change');
|
3266
3380
|
});
|
3267
3381
|
};
|
3268
3382
|
|
@@ -3295,12 +3409,15 @@ S2.define('select2/data/select',[
|
|
3295
3409
|
var $options = this.$element.children();
|
3296
3410
|
|
3297
3411
|
$options.each(function () {
|
3298
|
-
|
3299
|
-
|
3300
|
-
|
3412
|
+
if (
|
3413
|
+
this.tagName.toLowerCase() !== 'option' &&
|
3414
|
+
this.tagName.toLowerCase() !== 'optgroup'
|
3415
|
+
) {
|
3301
3416
|
return;
|
3302
3417
|
}
|
3303
3418
|
|
3419
|
+
var $option = $(this);
|
3420
|
+
|
3304
3421
|
var option = self.item($option);
|
3305
3422
|
|
3306
3423
|
var matches = self.matches(params, option);
|
@@ -3316,7 +3433,7 @@ S2.define('select2/data/select',[
|
|
3316
3433
|
};
|
3317
3434
|
|
3318
3435
|
SelectAdapter.prototype.addOptions = function ($options) {
|
3319
|
-
|
3436
|
+
this.$element.append($options);
|
3320
3437
|
};
|
3321
3438
|
|
3322
3439
|
SelectAdapter.prototype.option = function (data) {
|
@@ -3351,15 +3468,13 @@ S2.define('select2/data/select',[
|
|
3351
3468
|
option.title = data.title;
|
3352
3469
|
}
|
3353
3470
|
|
3354
|
-
var $option = $(option);
|
3355
|
-
|
3356
3471
|
var normalizedData = this._normalizeItem(data);
|
3357
3472
|
normalizedData.element = option;
|
3358
3473
|
|
3359
3474
|
// Override the option's data with the combined data
|
3360
3475
|
Utils.StoreData(option, 'data', normalizedData);
|
3361
3476
|
|
3362
|
-
return $option;
|
3477
|
+
return $(option);
|
3363
3478
|
};
|
3364
3479
|
|
3365
3480
|
SelectAdapter.prototype.item = function ($option) {
|
@@ -3371,7 +3486,9 @@ S2.define('select2/data/select',[
|
|
3371
3486
|
return data;
|
3372
3487
|
}
|
3373
3488
|
|
3374
|
-
|
3489
|
+
var option = $option[0];
|
3490
|
+
|
3491
|
+
if (option.tagName.toLowerCase() === 'option') {
|
3375
3492
|
data = {
|
3376
3493
|
id: $option.val(),
|
3377
3494
|
text: $option.text(),
|
@@ -3379,7 +3496,7 @@ S2.define('select2/data/select',[
|
|
3379
3496
|
selected: $option.prop('selected'),
|
3380
3497
|
title: $option.prop('title')
|
3381
3498
|
};
|
3382
|
-
} else if (
|
3499
|
+
} else if (option.tagName.toLowerCase() === 'optgroup') {
|
3383
3500
|
data = {
|
3384
3501
|
text: $option.prop('label'),
|
3385
3502
|
children: [],
|
@@ -3503,7 +3620,7 @@ S2.define('select2/data/array',[
|
|
3503
3620
|
var item = this._normalizeItem(data[d]);
|
3504
3621
|
|
3505
3622
|
// Skip items which were pre-loaded, only merge the data
|
3506
|
-
if (
|
3623
|
+
if (existingIds.indexOf(item.id) >= 0) {
|
3507
3624
|
var $existingOption = $existing.filter(onlyItem(item));
|
3508
3625
|
|
3509
3626
|
var existingData = this.item($existingOption);
|
@@ -3521,7 +3638,7 @@ S2.define('select2/data/array',[
|
|
3521
3638
|
if (item.children) {
|
3522
3639
|
var $children = this.convertToOptions(item.children);
|
3523
3640
|
|
3524
|
-
|
3641
|
+
$option.append($children);
|
3525
3642
|
}
|
3526
3643
|
|
3527
3644
|
$options.push($option);
|
@@ -3605,7 +3722,7 @@ S2.define('select2/data/ajax',[
|
|
3605
3722
|
|
3606
3723
|
if (self.options.get('debug') && window.console && console.error) {
|
3607
3724
|
// Check to make sure that the response included a `results` key.
|
3608
|
-
if (!results || !results.results ||
|
3725
|
+
if (!results || !results.results || !Array.isArray(results.results)) {
|
3609
3726
|
console.error(
|
3610
3727
|
'Select2: The AJAX results did not return an array in the ' +
|
3611
3728
|
'`results` key of the response.'
|
@@ -3664,7 +3781,7 @@ S2.define('select2/data/tags',[
|
|
3664
3781
|
|
3665
3782
|
decorated.call(this, $element, options);
|
3666
3783
|
|
3667
|
-
if (
|
3784
|
+
if (Array.isArray(tags)) {
|
3668
3785
|
for (var t = 0; t < tags.length; t++) {
|
3669
3786
|
var tag = tags[t];
|
3670
3787
|
var item = this._normalizeItem(tag);
|
@@ -3740,7 +3857,11 @@ S2.define('select2/data/tags',[
|
|
3740
3857
|
};
|
3741
3858
|
|
3742
3859
|
Tags.prototype.createTag = function (decorated, params) {
|
3743
|
-
|
3860
|
+
if (params.term == null) {
|
3861
|
+
return null;
|
3862
|
+
}
|
3863
|
+
|
3864
|
+
var term = params.term.trim();
|
3744
3865
|
|
3745
3866
|
if (term === '') {
|
3746
3867
|
return null;
|
@@ -3855,7 +3976,7 @@ S2.define('select2/data/tokenizer',[
|
|
3855
3976
|
while (i < term.length) {
|
3856
3977
|
var termChar = term[i];
|
3857
3978
|
|
3858
|
-
if (
|
3979
|
+
if (separators.indexOf(termChar) === -1) {
|
3859
3980
|
i++;
|
3860
3981
|
|
3861
3982
|
continue;
|
@@ -4050,9 +4171,8 @@ S2.define('select2/dropdown',[
|
|
4050
4171
|
});
|
4051
4172
|
|
4052
4173
|
S2.define('select2/dropdown/search',[
|
4053
|
-
'jquery'
|
4054
|
-
|
4055
|
-
], function ($, Utils) {
|
4174
|
+
'jquery'
|
4175
|
+
], function ($) {
|
4056
4176
|
function Search () { }
|
4057
4177
|
|
4058
4178
|
Search.prototype.render = function (decorated) {
|
@@ -4061,7 +4181,7 @@ S2.define('select2/dropdown/search',[
|
|
4061
4181
|
var $search = $(
|
4062
4182
|
'<span class="select2-search select2-search--dropdown">' +
|
4063
4183
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
4064
|
-
'
|
4184
|
+
' autocorrect="off" autocapitalize="none"' +
|
4065
4185
|
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
4066
4186
|
'</span>'
|
4067
4187
|
);
|
@@ -4069,6 +4189,8 @@ S2.define('select2/dropdown/search',[
|
|
4069
4189
|
this.$searchContainer = $search;
|
4070
4190
|
this.$search = $search.find('input');
|
4071
4191
|
|
4192
|
+
this.$search.prop('autocomplete', this.options.get('autocomplete'));
|
4193
|
+
|
4072
4194
|
$rendered.prepend($search);
|
4073
4195
|
|
4074
4196
|
return $rendered;
|
@@ -4130,9 +4252,9 @@ S2.define('select2/dropdown/search',[
|
|
4130
4252
|
var showSearch = self.showSearch(params);
|
4131
4253
|
|
4132
4254
|
if (showSearch) {
|
4133
|
-
self.$searchContainer.
|
4255
|
+
self.$searchContainer[0].classList.remove('select2-search--hide');
|
4134
4256
|
} else {
|
4135
|
-
self.$searchContainer.
|
4257
|
+
self.$searchContainer[0].classList.add('select2-search--hide');
|
4136
4258
|
}
|
4137
4259
|
}
|
4138
4260
|
});
|
@@ -4306,7 +4428,7 @@ S2.define('select2/dropdown/attachBody',[
|
|
4306
4428
|
'../utils'
|
4307
4429
|
], function ($, Utils) {
|
4308
4430
|
function AttachBody (decorated, $element, options) {
|
4309
|
-
this.$dropdownParent = options.get('dropdownParent') ||
|
4431
|
+
this.$dropdownParent = $(options.get('dropdownParent') || document.body);
|
4310
4432
|
|
4311
4433
|
decorated.call(this, $element, options);
|
4312
4434
|
}
|
@@ -4319,6 +4441,9 @@ S2.define('select2/dropdown/attachBody',[
|
|
4319
4441
|
container.on('open', function () {
|
4320
4442
|
self._showDropdown();
|
4321
4443
|
self._attachPositioningHandler(container);
|
4444
|
+
|
4445
|
+
// Must bind after the results handlers to ensure correct sizing
|
4446
|
+
self._bindContainerResultHandlers(container);
|
4322
4447
|
});
|
4323
4448
|
|
4324
4449
|
container.on('close', function () {
|
@@ -4326,31 +4451,6 @@ S2.define('select2/dropdown/attachBody',[
|
|
4326
4451
|
self._detachPositioningHandler(container);
|
4327
4452
|
});
|
4328
4453
|
|
4329
|
-
container.on('results:all', function () {
|
4330
|
-
self._positionDropdown();
|
4331
|
-
self._resizeDropdown();
|
4332
|
-
});
|
4333
|
-
|
4334
|
-
container.on('results:append', function () {
|
4335
|
-
self._positionDropdown();
|
4336
|
-
self._resizeDropdown();
|
4337
|
-
});
|
4338
|
-
|
4339
|
-
container.on('results:message', function () {
|
4340
|
-
self._positionDropdown();
|
4341
|
-
self._resizeDropdown();
|
4342
|
-
});
|
4343
|
-
|
4344
|
-
container.on('select', function () {
|
4345
|
-
self._positionDropdown();
|
4346
|
-
self._resizeDropdown();
|
4347
|
-
});
|
4348
|
-
|
4349
|
-
container.on('unselect', function () {
|
4350
|
-
self._positionDropdown();
|
4351
|
-
self._resizeDropdown();
|
4352
|
-
});
|
4353
|
-
|
4354
4454
|
this.$dropdownContainer.on('mousedown', function (evt) {
|
4355
4455
|
evt.stopPropagation();
|
4356
4456
|
});
|
@@ -4366,8 +4466,8 @@ S2.define('select2/dropdown/attachBody',[
|
|
4366
4466
|
// Clone all of the container classes
|
4367
4467
|
$dropdown.attr('class', $container.attr('class'));
|
4368
4468
|
|
4369
|
-
$dropdown.
|
4370
|
-
$dropdown.
|
4469
|
+
$dropdown[0].classList.remove('select2');
|
4470
|
+
$dropdown[0].classList.add('select2-container--open');
|
4371
4471
|
|
4372
4472
|
$dropdown.css({
|
4373
4473
|
position: 'absolute',
|
@@ -4392,6 +4492,44 @@ S2.define('select2/dropdown/attachBody',[
|
|
4392
4492
|
this.$dropdownContainer.detach();
|
4393
4493
|
};
|
4394
4494
|
|
4495
|
+
AttachBody.prototype._bindContainerResultHandlers =
|
4496
|
+
function (decorated, container) {
|
4497
|
+
|
4498
|
+
// These should only be bound once
|
4499
|
+
if (this._containerResultsHandlersBound) {
|
4500
|
+
return;
|
4501
|
+
}
|
4502
|
+
|
4503
|
+
var self = this;
|
4504
|
+
|
4505
|
+
container.on('results:all', function () {
|
4506
|
+
self._positionDropdown();
|
4507
|
+
self._resizeDropdown();
|
4508
|
+
});
|
4509
|
+
|
4510
|
+
container.on('results:append', function () {
|
4511
|
+
self._positionDropdown();
|
4512
|
+
self._resizeDropdown();
|
4513
|
+
});
|
4514
|
+
|
4515
|
+
container.on('results:message', function () {
|
4516
|
+
self._positionDropdown();
|
4517
|
+
self._resizeDropdown();
|
4518
|
+
});
|
4519
|
+
|
4520
|
+
container.on('select', function () {
|
4521
|
+
self._positionDropdown();
|
4522
|
+
self._resizeDropdown();
|
4523
|
+
});
|
4524
|
+
|
4525
|
+
container.on('unselect', function () {
|
4526
|
+
self._positionDropdown();
|
4527
|
+
self._resizeDropdown();
|
4528
|
+
});
|
4529
|
+
|
4530
|
+
this._containerResultsHandlersBound = true;
|
4531
|
+
};
|
4532
|
+
|
4395
4533
|
AttachBody.prototype._attachPositioningHandler =
|
4396
4534
|
function (decorated, container) {
|
4397
4535
|
var self = this;
|
@@ -4435,8 +4573,10 @@ S2.define('select2/dropdown/attachBody',[
|
|
4435
4573
|
AttachBody.prototype._positionDropdown = function () {
|
4436
4574
|
var $window = $(window);
|
4437
4575
|
|
4438
|
-
var isCurrentlyAbove = this.$dropdown.
|
4439
|
-
|
4576
|
+
var isCurrentlyAbove = this.$dropdown[0].classList
|
4577
|
+
.contains('select2-dropdown--above');
|
4578
|
+
var isCurrentlyBelow = this.$dropdown[0].classList
|
4579
|
+
.contains('select2-dropdown--below');
|
4440
4580
|
|
4441
4581
|
var newDirection = null;
|
4442
4582
|
|
@@ -4477,7 +4617,17 @@ S2.define('select2/dropdown/attachBody',[
|
|
4477
4617
|
$offsetParent = $offsetParent.offsetParent();
|
4478
4618
|
}
|
4479
4619
|
|
4480
|
-
var parentOffset =
|
4620
|
+
var parentOffset = {
|
4621
|
+
top: 0,
|
4622
|
+
left: 0
|
4623
|
+
};
|
4624
|
+
|
4625
|
+
if (
|
4626
|
+
$.contains(document.body, $offsetParent[0]) ||
|
4627
|
+
$offsetParent[0].isConnected
|
4628
|
+
) {
|
4629
|
+
parentOffset = $offsetParent.offset();
|
4630
|
+
}
|
4481
4631
|
|
4482
4632
|
css.top -= parentOffset.top;
|
4483
4633
|
css.left -= parentOffset.left;
|
@@ -4498,12 +4648,13 @@ S2.define('select2/dropdown/attachBody',[
|
|
4498
4648
|
}
|
4499
4649
|
|
4500
4650
|
if (newDirection != null) {
|
4501
|
-
this.$dropdown
|
4502
|
-
|
4503
|
-
|
4504
|
-
|
4505
|
-
|
4506
|
-
|
4651
|
+
this.$dropdown[0].classList.remove('select2-dropdown--below');
|
4652
|
+
this.$dropdown[0].classList.remove('select2-dropdown--above');
|
4653
|
+
this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);
|
4654
|
+
|
4655
|
+
this.$container[0].classList.remove('select2-container--below');
|
4656
|
+
this.$container[0].classList.remove('select2-container--above');
|
4657
|
+
this.$container[0].classList.add('select2-container--' + newDirection);
|
4507
4658
|
}
|
4508
4659
|
|
4509
4660
|
this.$dropdownContainer.css(css);
|
@@ -4660,6 +4811,30 @@ S2.define('select2/dropdown/closeOnSelect',[
|
|
4660
4811
|
return CloseOnSelect;
|
4661
4812
|
});
|
4662
4813
|
|
4814
|
+
S2.define('select2/dropdown/dropdownCss',[
|
4815
|
+
'../utils'
|
4816
|
+
], function (Utils) {
|
4817
|
+
function DropdownCSS () { }
|
4818
|
+
|
4819
|
+
DropdownCSS.prototype.render = function (decorated) {
|
4820
|
+
var $dropdown = decorated.call(this);
|
4821
|
+
|
4822
|
+
var dropdownCssClass = this.options.get('dropdownCssClass') || '';
|
4823
|
+
|
4824
|
+
if (dropdownCssClass.indexOf(':all:') !== -1) {
|
4825
|
+
dropdownCssClass = dropdownCssClass.replace(':all:', '');
|
4826
|
+
|
4827
|
+
Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);
|
4828
|
+
}
|
4829
|
+
|
4830
|
+
$dropdown.addClass(dropdownCssClass);
|
4831
|
+
|
4832
|
+
return $dropdown;
|
4833
|
+
};
|
4834
|
+
|
4835
|
+
return DropdownCSS;
|
4836
|
+
});
|
4837
|
+
|
4663
4838
|
S2.define('select2/i18n/en',[],function () {
|
4664
4839
|
// English
|
4665
4840
|
return {
|
@@ -4704,13 +4879,15 @@ S2.define('select2/i18n/en',[],function () {
|
|
4704
4879
|
},
|
4705
4880
|
removeAllItems: function () {
|
4706
4881
|
return 'Remove all items';
|
4882
|
+
},
|
4883
|
+
removeItem: function () {
|
4884
|
+
return 'Remove item';
|
4707
4885
|
}
|
4708
4886
|
};
|
4709
4887
|
});
|
4710
4888
|
|
4711
4889
|
S2.define('select2/defaults',[
|
4712
4890
|
'jquery',
|
4713
|
-
'require',
|
4714
4891
|
|
4715
4892
|
'./results',
|
4716
4893
|
|
@@ -4719,6 +4896,7 @@ S2.define('select2/defaults',[
|
|
4719
4896
|
'./selection/placeholder',
|
4720
4897
|
'./selection/allowClear',
|
4721
4898
|
'./selection/search',
|
4899
|
+
'./selection/selectionCss',
|
4722
4900
|
'./selection/eventRelay',
|
4723
4901
|
|
4724
4902
|
'./utils',
|
@@ -4742,14 +4920,15 @@ S2.define('select2/defaults',[
|
|
4742
4920
|
'./dropdown/minimumResultsForSearch',
|
4743
4921
|
'./dropdown/selectOnClose',
|
4744
4922
|
'./dropdown/closeOnSelect',
|
4923
|
+
'./dropdown/dropdownCss',
|
4745
4924
|
|
4746
4925
|
'./i18n/en'
|
4747
|
-
], function ($,
|
4926
|
+
], function ($,
|
4748
4927
|
|
4749
4928
|
ResultsList,
|
4750
4929
|
|
4751
4930
|
SingleSelection, MultipleSelection, Placeholder, AllowClear,
|
4752
|
-
SelectionSearch, EventRelay,
|
4931
|
+
SelectionSearch, SelectionCSS, EventRelay,
|
4753
4932
|
|
4754
4933
|
Utils, Translation, DIACRITICS,
|
4755
4934
|
|
@@ -4758,6 +4937,7 @@ S2.define('select2/defaults',[
|
|
4758
4937
|
|
4759
4938
|
Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
|
4760
4939
|
AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
|
4940
|
+
DropdownCSS,
|
4761
4941
|
|
4762
4942
|
EnglishTranslation) {
|
4763
4943
|
function Defaults () {
|
@@ -4807,24 +4987,6 @@ S2.define('select2/defaults',[
|
|
4807
4987
|
Tokenizer
|
4808
4988
|
);
|
4809
4989
|
}
|
4810
|
-
|
4811
|
-
if (options.query != null) {
|
4812
|
-
var Query = require(options.amdBase + 'compat/query');
|
4813
|
-
|
4814
|
-
options.dataAdapter = Utils.Decorate(
|
4815
|
-
options.dataAdapter,
|
4816
|
-
Query
|
4817
|
-
);
|
4818
|
-
}
|
4819
|
-
|
4820
|
-
if (options.initSelection != null) {
|
4821
|
-
var InitSelection = require(options.amdBase + 'compat/initSelection');
|
4822
|
-
|
4823
|
-
options.dataAdapter = Utils.Decorate(
|
4824
|
-
options.dataAdapter,
|
4825
|
-
InitSelection
|
4826
|
-
);
|
4827
|
-
}
|
4828
4990
|
}
|
4829
4991
|
|
4830
4992
|
if (options.resultsAdapter == null) {
|
@@ -4875,13 +5037,7 @@ S2.define('select2/defaults',[
|
|
4875
5037
|
);
|
4876
5038
|
}
|
4877
5039
|
|
4878
|
-
if (
|
4879
|
-
options.dropdownCssClass != null ||
|
4880
|
-
options.dropdownCss != null ||
|
4881
|
-
options.adaptDropdownCssClass != null
|
4882
|
-
) {
|
4883
|
-
var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
|
4884
|
-
|
5040
|
+
if (options.dropdownCssClass != null) {
|
4885
5041
|
options.dropdownAdapter = Utils.Decorate(
|
4886
5042
|
options.dropdownAdapter,
|
4887
5043
|
DropdownCSS
|
@@ -4923,16 +5079,10 @@ S2.define('select2/defaults',[
|
|
4923
5079
|
);
|
4924
5080
|
}
|
4925
5081
|
|
4926
|
-
if (
|
4927
|
-
options.containerCssClass != null ||
|
4928
|
-
options.containerCss != null ||
|
4929
|
-
options.adaptContainerCssClass != null
|
4930
|
-
) {
|
4931
|
-
var ContainerCSS = require(options.amdBase + 'compat/containerCss');
|
4932
|
-
|
5082
|
+
if (options.selectionCssClass != null) {
|
4933
5083
|
options.selectionAdapter = Utils.Decorate(
|
4934
5084
|
options.selectionAdapter,
|
4935
|
-
|
5085
|
+
SelectionCSS
|
4936
5086
|
);
|
4937
5087
|
}
|
4938
5088
|
|
@@ -4981,7 +5131,7 @@ S2.define('select2/defaults',[
|
|
4981
5131
|
|
4982
5132
|
function matcher (params, data) {
|
4983
5133
|
// Always return the object if there is nothing to compare
|
4984
|
-
if (
|
5134
|
+
if (params.term == null || params.term.trim() === '') {
|
4985
5135
|
return data;
|
4986
5136
|
}
|
4987
5137
|
|
@@ -5025,8 +5175,8 @@ S2.define('select2/defaults',[
|
|
5025
5175
|
}
|
5026
5176
|
|
5027
5177
|
this.defaults = {
|
5028
|
-
amdBase: './',
|
5029
5178
|
amdLanguageBase: './i18n/',
|
5179
|
+
autocomplete: 'off',
|
5030
5180
|
closeOnSelect: true,
|
5031
5181
|
debug: false,
|
5032
5182
|
dropdownAutoWidth: false,
|
@@ -5086,7 +5236,7 @@ S2.define('select2/defaults',[
|
|
5086
5236
|
|
5087
5237
|
var languages;
|
5088
5238
|
|
5089
|
-
if (
|
5239
|
+
if (!Array.isArray(language)) {
|
5090
5240
|
languages = [language];
|
5091
5241
|
} else {
|
5092
5242
|
languages = language;
|
@@ -5167,11 +5317,10 @@ S2.define('select2/defaults',[
|
|
5167
5317
|
});
|
5168
5318
|
|
5169
5319
|
S2.define('select2/options',[
|
5170
|
-
'require',
|
5171
5320
|
'jquery',
|
5172
5321
|
'./defaults',
|
5173
5322
|
'./utils'
|
5174
|
-
], function (
|
5323
|
+
], function ($, Defaults, Utils) {
|
5175
5324
|
function Options (options, $element) {
|
5176
5325
|
this.options = options;
|
5177
5326
|
|
@@ -5184,15 +5333,6 @@ S2.define('select2/options',[
|
|
5184
5333
|
}
|
5185
5334
|
|
5186
5335
|
this.options = Defaults.apply(this.options);
|
5187
|
-
|
5188
|
-
if ($element && $element.is('input')) {
|
5189
|
-
var InputCompat = require(this.get('amdBase') + 'compat/inputData');
|
5190
|
-
|
5191
|
-
this.options.dataAdapter = Utils.Decorate(
|
5192
|
-
this.options.dataAdapter,
|
5193
|
-
InputCompat
|
5194
|
-
);
|
5195
|
-
}
|
5196
5336
|
}
|
5197
5337
|
|
5198
5338
|
Options.prototype.fromElement = function ($e) {
|
@@ -5206,6 +5346,10 @@ S2.define('select2/options',[
|
|
5206
5346
|
this.options.disabled = $e.prop('disabled');
|
5207
5347
|
}
|
5208
5348
|
|
5349
|
+
if (this.options.autocomplete == null && $e.prop('autocomplete')) {
|
5350
|
+
this.options.autocomplete = $e.prop('autocomplete');
|
5351
|
+
}
|
5352
|
+
|
5209
5353
|
if (this.options.dir == null) {
|
5210
5354
|
if ($e.prop('dir')) {
|
5211
5355
|
this.options.dir = $e.prop('dir');
|
@@ -5284,7 +5428,7 @@ S2.define('select2/options',[
|
|
5284
5428
|
data = Utils._convertData(data);
|
5285
5429
|
|
5286
5430
|
for (var key in data) {
|
5287
|
-
if (
|
5431
|
+
if (excludedData.indexOf(key) > -1) {
|
5288
5432
|
continue;
|
5289
5433
|
}
|
5290
5434
|
|
@@ -5388,7 +5532,7 @@ S2.define('select2/core',[
|
|
5388
5532
|
});
|
5389
5533
|
|
5390
5534
|
// Hide the original select
|
5391
|
-
$element.
|
5535
|
+
$element[0].classList.add('select2-hidden-accessible');
|
5392
5536
|
$element.attr('aria-hidden', 'true');
|
5393
5537
|
|
5394
5538
|
// Synchronize any monitored attributes
|
@@ -5508,42 +5652,15 @@ S2.define('select2/core',[
|
|
5508
5652
|
this._syncA = Utils.bind(this._syncAttributes, this);
|
5509
5653
|
this._syncS = Utils.bind(this._syncSubtree, this);
|
5510
5654
|
|
5511
|
-
|
5512
|
-
|
5513
|
-
|
5514
|
-
|
5515
|
-
|
5516
|
-
|
5517
|
-
|
5518
|
-
|
5519
|
-
|
5520
|
-
if (observer != null) {
|
5521
|
-
this._observer = new observer(function (mutations) {
|
5522
|
-
$.each(mutations, self._syncA);
|
5523
|
-
$.each(mutations, self._syncS);
|
5524
|
-
});
|
5525
|
-
this._observer.observe(this.$element[0], {
|
5526
|
-
attributes: true,
|
5527
|
-
childList: true,
|
5528
|
-
subtree: false
|
5529
|
-
});
|
5530
|
-
} else if (this.$element[0].addEventListener) {
|
5531
|
-
this.$element[0].addEventListener(
|
5532
|
-
'DOMAttrModified',
|
5533
|
-
self._syncA,
|
5534
|
-
false
|
5535
|
-
);
|
5536
|
-
this.$element[0].addEventListener(
|
5537
|
-
'DOMNodeInserted',
|
5538
|
-
self._syncS,
|
5539
|
-
false
|
5540
|
-
);
|
5541
|
-
this.$element[0].addEventListener(
|
5542
|
-
'DOMNodeRemoved',
|
5543
|
-
self._syncS,
|
5544
|
-
false
|
5545
|
-
);
|
5546
|
-
}
|
5655
|
+
this._observer = new window.MutationObserver(function (mutations) {
|
5656
|
+
self._syncA();
|
5657
|
+
self._syncS(mutations);
|
5658
|
+
});
|
5659
|
+
this._observer.observe(this.$element[0], {
|
5660
|
+
attributes: true,
|
5661
|
+
childList: true,
|
5662
|
+
subtree: false
|
5663
|
+
});
|
5547
5664
|
};
|
5548
5665
|
|
5549
5666
|
Select2.prototype._registerDataEvents = function () {
|
@@ -5567,7 +5684,7 @@ S2.define('select2/core',[
|
|
5567
5684
|
});
|
5568
5685
|
|
5569
5686
|
this.selection.on('*', function (name, params) {
|
5570
|
-
if (
|
5687
|
+
if (nonRelayEvents.indexOf(name) !== -1) {
|
5571
5688
|
return;
|
5572
5689
|
}
|
5573
5690
|
|
@@ -5595,23 +5712,23 @@ S2.define('select2/core',[
|
|
5595
5712
|
var self = this;
|
5596
5713
|
|
5597
5714
|
this.on('open', function () {
|
5598
|
-
self.$container.
|
5715
|
+
self.$container[0].classList.add('select2-container--open');
|
5599
5716
|
});
|
5600
5717
|
|
5601
5718
|
this.on('close', function () {
|
5602
|
-
self.$container.
|
5719
|
+
self.$container[0].classList.remove('select2-container--open');
|
5603
5720
|
});
|
5604
5721
|
|
5605
5722
|
this.on('enable', function () {
|
5606
|
-
self.$container.
|
5723
|
+
self.$container[0].classList.remove('select2-container--disabled');
|
5607
5724
|
});
|
5608
5725
|
|
5609
5726
|
this.on('disable', function () {
|
5610
|
-
self.$container.
|
5727
|
+
self.$container[0].classList.add('select2-container--disabled');
|
5611
5728
|
});
|
5612
5729
|
|
5613
5730
|
this.on('blur', function () {
|
5614
|
-
self.$container.
|
5731
|
+
self.$container[0].classList.remove('select2-container--focus');
|
5615
5732
|
});
|
5616
5733
|
|
5617
5734
|
this.on('query', function (params) {
|
@@ -5642,7 +5759,7 @@ S2.define('select2/core',[
|
|
5642
5759
|
if (self.isOpen()) {
|
5643
5760
|
if (key === KEYS.ESC || key === KEYS.TAB ||
|
5644
5761
|
(key === KEYS.UP && evt.altKey)) {
|
5645
|
-
self.close();
|
5762
|
+
self.close(evt);
|
5646
5763
|
|
5647
5764
|
evt.preventDefault();
|
5648
5765
|
} else if (key === KEYS.ENTER) {
|
@@ -5676,7 +5793,7 @@ S2.define('select2/core',[
|
|
5676
5793
|
Select2.prototype._syncAttributes = function () {
|
5677
5794
|
this.options.set('disabled', this.$element.prop('disabled'));
|
5678
5795
|
|
5679
|
-
if (this.
|
5796
|
+
if (this.isDisabled()) {
|
5680
5797
|
if (this.isOpen()) {
|
5681
5798
|
this.close();
|
5682
5799
|
}
|
@@ -5687,36 +5804,32 @@ S2.define('select2/core',[
|
|
5687
5804
|
}
|
5688
5805
|
};
|
5689
5806
|
|
5690
|
-
Select2.prototype.
|
5691
|
-
var changed = false;
|
5807
|
+
Select2.prototype._isChangeMutation = function (mutations) {
|
5692
5808
|
var self = this;
|
5693
5809
|
|
5694
|
-
|
5695
|
-
// optgroups. This handles the case when the select element is destroyed
|
5696
|
-
if (
|
5697
|
-
evt && evt.target && (
|
5698
|
-
evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
|
5699
|
-
)
|
5700
|
-
) {
|
5701
|
-
return;
|
5702
|
-
}
|
5703
|
-
|
5704
|
-
if (!mutations) {
|
5705
|
-
// If mutation events aren't supported, then we can only assume that the
|
5706
|
-
// change affected the selections
|
5707
|
-
changed = true;
|
5708
|
-
} else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
|
5810
|
+
if (mutations.addedNodes && mutations.addedNodes.length > 0) {
|
5709
5811
|
for (var n = 0; n < mutations.addedNodes.length; n++) {
|
5710
5812
|
var node = mutations.addedNodes[n];
|
5711
5813
|
|
5712
5814
|
if (node.selected) {
|
5713
|
-
|
5815
|
+
return true;
|
5714
5816
|
}
|
5715
5817
|
}
|
5716
5818
|
} else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
|
5717
|
-
|
5819
|
+
return true;
|
5820
|
+
} else if (Array.isArray(mutations)) {
|
5821
|
+
return mutations.some(function (mutation) {
|
5822
|
+
return self._isChangeMutation(mutation);
|
5823
|
+
});
|
5718
5824
|
}
|
5719
5825
|
|
5826
|
+
return false;
|
5827
|
+
};
|
5828
|
+
|
5829
|
+
Select2.prototype._syncSubtree = function (mutations) {
|
5830
|
+
var changed = this._isChangeMutation(mutations);
|
5831
|
+
var self = this;
|
5832
|
+
|
5720
5833
|
// Only re-pull the data if we think there is a change
|
5721
5834
|
if (changed) {
|
5722
5835
|
this.dataAdapter.current(function (currentData) {
|
@@ -5766,7 +5879,7 @@ S2.define('select2/core',[
|
|
5766
5879
|
};
|
5767
5880
|
|
5768
5881
|
Select2.prototype.toggleDropdown = function () {
|
5769
|
-
if (this.
|
5882
|
+
if (this.isDisabled()) {
|
5770
5883
|
return;
|
5771
5884
|
}
|
5772
5885
|
|
@@ -5782,23 +5895,48 @@ S2.define('select2/core',[
|
|
5782
5895
|
return;
|
5783
5896
|
}
|
5784
5897
|
|
5898
|
+
if (this.isDisabled()) {
|
5899
|
+
return;
|
5900
|
+
}
|
5901
|
+
|
5785
5902
|
this.trigger('query', {});
|
5786
5903
|
};
|
5787
5904
|
|
5788
|
-
Select2.prototype.close = function () {
|
5905
|
+
Select2.prototype.close = function (evt) {
|
5789
5906
|
if (!this.isOpen()) {
|
5790
5907
|
return;
|
5791
5908
|
}
|
5792
5909
|
|
5793
|
-
this.trigger('close', {});
|
5910
|
+
this.trigger('close', { originalEvent : evt });
|
5911
|
+
};
|
5912
|
+
|
5913
|
+
/**
|
5914
|
+
* Helper method to abstract the "enabled" (not "disabled") state of this
|
5915
|
+
* object.
|
5916
|
+
*
|
5917
|
+
* @return {true} if the instance is not disabled.
|
5918
|
+
* @return {false} if the instance is disabled.
|
5919
|
+
*/
|
5920
|
+
Select2.prototype.isEnabled = function () {
|
5921
|
+
return !this.isDisabled();
|
5922
|
+
};
|
5923
|
+
|
5924
|
+
/**
|
5925
|
+
* Helper method to abstract the "disabled" state of this object.
|
5926
|
+
*
|
5927
|
+
* @return {true} if the disabled option is true.
|
5928
|
+
* @return {false} if the disabled option is false.
|
5929
|
+
*/
|
5930
|
+
Select2.prototype.isDisabled = function () {
|
5931
|
+
return this.options.get('disabled');
|
5794
5932
|
};
|
5795
5933
|
|
5796
5934
|
Select2.prototype.isOpen = function () {
|
5797
|
-
return this.$container.
|
5935
|
+
return this.$container[0].classList.contains('select2-container--open');
|
5798
5936
|
};
|
5799
5937
|
|
5800
5938
|
Select2.prototype.hasFocus = function () {
|
5801
|
-
return this.$container.
|
5939
|
+
return this.$container[0].classList.contains('select2-container--focus');
|
5802
5940
|
};
|
5803
5941
|
|
5804
5942
|
Select2.prototype.focus = function (data) {
|
@@ -5807,7 +5945,7 @@ S2.define('select2/core',[
|
|
5807
5945
|
return;
|
5808
5946
|
}
|
5809
5947
|
|
5810
|
-
this.$container.
|
5948
|
+
this.$container[0].classList.add('select2-container--focus');
|
5811
5949
|
this.trigger('focus', {});
|
5812
5950
|
};
|
5813
5951
|
|
@@ -5861,33 +5999,20 @@ S2.define('select2/core',[
|
|
5861
5999
|
|
5862
6000
|
var newVal = args[0];
|
5863
6001
|
|
5864
|
-
if (
|
5865
|
-
newVal =
|
6002
|
+
if (Array.isArray(newVal)) {
|
6003
|
+
newVal = newVal.map(function (obj) {
|
5866
6004
|
return obj.toString();
|
5867
6005
|
});
|
5868
6006
|
}
|
5869
6007
|
|
5870
|
-
this.$element.val(newVal).trigger('change');
|
6008
|
+
this.$element.val(newVal).trigger('input').trigger('change');
|
5871
6009
|
};
|
5872
6010
|
|
5873
6011
|
Select2.prototype.destroy = function () {
|
5874
6012
|
this.$container.remove();
|
5875
6013
|
|
5876
|
-
|
5877
|
-
|
5878
|
-
}
|
5879
|
-
|
5880
|
-
if (this._observer != null) {
|
5881
|
-
this._observer.disconnect();
|
5882
|
-
this._observer = null;
|
5883
|
-
} else if (this.$element[0].removeEventListener) {
|
5884
|
-
this.$element[0]
|
5885
|
-
.removeEventListener('DOMAttrModified', this._syncA, false);
|
5886
|
-
this.$element[0]
|
5887
|
-
.removeEventListener('DOMNodeInserted', this._syncS, false);
|
5888
|
-
this.$element[0]
|
5889
|
-
.removeEventListener('DOMNodeRemoved', this._syncS, false);
|
5890
|
-
}
|
6014
|
+
this._observer.disconnect();
|
6015
|
+
this._observer = null;
|
5891
6016
|
|
5892
6017
|
this._syncA = null;
|
5893
6018
|
this._syncS = null;
|
@@ -5896,7 +6021,7 @@ S2.define('select2/core',[
|
|
5896
6021
|
this.$element.attr('tabindex',
|
5897
6022
|
Utils.GetData(this.$element[0], 'old-tabindex'));
|
5898
6023
|
|
5899
|
-
this.$element.
|
6024
|
+
this.$element[0].classList.remove('select2-hidden-accessible');
|
5900
6025
|
this.$element.attr('aria-hidden', 'false');
|
5901
6026
|
Utils.RemoveData(this.$element[0]);
|
5902
6027
|
this.$element.removeData('select2');
|
@@ -5924,7 +6049,8 @@ S2.define('select2/core',[
|
|
5924
6049
|
|
5925
6050
|
this.$container = $container;
|
5926
6051
|
|
5927
|
-
this.$container.
|
6052
|
+
this.$container[0].classList
|
6053
|
+
.add('select2-container--' + this.options.get('theme'));
|
5928
6054
|
|
5929
6055
|
Utils.StoreData($container[0], 'element', this.$element);
|
5930
6056
|
|
@@ -5934,406 +6060,6 @@ S2.define('select2/core',[
|
|
5934
6060
|
return Select2;
|
5935
6061
|
});
|
5936
6062
|
|
5937
|
-
S2.define('select2/compat/utils',[
|
5938
|
-
'jquery'
|
5939
|
-
], function ($) {
|
5940
|
-
function syncCssClasses ($dest, $src, adapter) {
|
5941
|
-
var classes, replacements = [], adapted;
|
5942
|
-
|
5943
|
-
classes = $.trim($dest.attr('class'));
|
5944
|
-
|
5945
|
-
if (classes) {
|
5946
|
-
classes = '' + classes; // for IE which returns object
|
5947
|
-
|
5948
|
-
$(classes.split(/\s+/)).each(function () {
|
5949
|
-
// Save all Select2 classes
|
5950
|
-
if (this.indexOf('select2-') === 0) {
|
5951
|
-
replacements.push(this);
|
5952
|
-
}
|
5953
|
-
});
|
5954
|
-
}
|
5955
|
-
|
5956
|
-
classes = $.trim($src.attr('class'));
|
5957
|
-
|
5958
|
-
if (classes) {
|
5959
|
-
classes = '' + classes; // for IE which returns object
|
5960
|
-
|
5961
|
-
$(classes.split(/\s+/)).each(function () {
|
5962
|
-
// Only adapt non-Select2 classes
|
5963
|
-
if (this.indexOf('select2-') !== 0) {
|
5964
|
-
adapted = adapter(this);
|
5965
|
-
|
5966
|
-
if (adapted != null) {
|
5967
|
-
replacements.push(adapted);
|
5968
|
-
}
|
5969
|
-
}
|
5970
|
-
});
|
5971
|
-
}
|
5972
|
-
|
5973
|
-
$dest.attr('class', replacements.join(' '));
|
5974
|
-
}
|
5975
|
-
|
5976
|
-
return {
|
5977
|
-
syncCssClasses: syncCssClasses
|
5978
|
-
};
|
5979
|
-
});
|
5980
|
-
|
5981
|
-
S2.define('select2/compat/containerCss',[
|
5982
|
-
'jquery',
|
5983
|
-
'./utils'
|
5984
|
-
], function ($, CompatUtils) {
|
5985
|
-
// No-op CSS adapter that discards all classes by default
|
5986
|
-
function _containerAdapter (clazz) {
|
5987
|
-
return null;
|
5988
|
-
}
|
5989
|
-
|
5990
|
-
function ContainerCSS () { }
|
5991
|
-
|
5992
|
-
ContainerCSS.prototype.render = function (decorated) {
|
5993
|
-
var $container = decorated.call(this);
|
5994
|
-
|
5995
|
-
var containerCssClass = this.options.get('containerCssClass') || '';
|
5996
|
-
|
5997
|
-
if ($.isFunction(containerCssClass)) {
|
5998
|
-
containerCssClass = containerCssClass(this.$element);
|
5999
|
-
}
|
6000
|
-
|
6001
|
-
var containerCssAdapter = this.options.get('adaptContainerCssClass');
|
6002
|
-
containerCssAdapter = containerCssAdapter || _containerAdapter;
|
6003
|
-
|
6004
|
-
if (containerCssClass.indexOf(':all:') !== -1) {
|
6005
|
-
containerCssClass = containerCssClass.replace(':all:', '');
|
6006
|
-
|
6007
|
-
var _cssAdapter = containerCssAdapter;
|
6008
|
-
|
6009
|
-
containerCssAdapter = function (clazz) {
|
6010
|
-
var adapted = _cssAdapter(clazz);
|
6011
|
-
|
6012
|
-
if (adapted != null) {
|
6013
|
-
// Append the old one along with the adapted one
|
6014
|
-
return adapted + ' ' + clazz;
|
6015
|
-
}
|
6016
|
-
|
6017
|
-
return clazz;
|
6018
|
-
};
|
6019
|
-
}
|
6020
|
-
|
6021
|
-
var containerCss = this.options.get('containerCss') || {};
|
6022
|
-
|
6023
|
-
if ($.isFunction(containerCss)) {
|
6024
|
-
containerCss = containerCss(this.$element);
|
6025
|
-
}
|
6026
|
-
|
6027
|
-
CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
|
6028
|
-
|
6029
|
-
$container.css(containerCss);
|
6030
|
-
$container.addClass(containerCssClass);
|
6031
|
-
|
6032
|
-
return $container;
|
6033
|
-
};
|
6034
|
-
|
6035
|
-
return ContainerCSS;
|
6036
|
-
});
|
6037
|
-
|
6038
|
-
S2.define('select2/compat/dropdownCss',[
|
6039
|
-
'jquery',
|
6040
|
-
'./utils'
|
6041
|
-
], function ($, CompatUtils) {
|
6042
|
-
// No-op CSS adapter that discards all classes by default
|
6043
|
-
function _dropdownAdapter (clazz) {
|
6044
|
-
return null;
|
6045
|
-
}
|
6046
|
-
|
6047
|
-
function DropdownCSS () { }
|
6048
|
-
|
6049
|
-
DropdownCSS.prototype.render = function (decorated) {
|
6050
|
-
var $dropdown = decorated.call(this);
|
6051
|
-
|
6052
|
-
var dropdownCssClass = this.options.get('dropdownCssClass') || '';
|
6053
|
-
|
6054
|
-
if ($.isFunction(dropdownCssClass)) {
|
6055
|
-
dropdownCssClass = dropdownCssClass(this.$element);
|
6056
|
-
}
|
6057
|
-
|
6058
|
-
var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
|
6059
|
-
dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
|
6060
|
-
|
6061
|
-
if (dropdownCssClass.indexOf(':all:') !== -1) {
|
6062
|
-
dropdownCssClass = dropdownCssClass.replace(':all:', '');
|
6063
|
-
|
6064
|
-
var _cssAdapter = dropdownCssAdapter;
|
6065
|
-
|
6066
|
-
dropdownCssAdapter = function (clazz) {
|
6067
|
-
var adapted = _cssAdapter(clazz);
|
6068
|
-
|
6069
|
-
if (adapted != null) {
|
6070
|
-
// Append the old one along with the adapted one
|
6071
|
-
return adapted + ' ' + clazz;
|
6072
|
-
}
|
6073
|
-
|
6074
|
-
return clazz;
|
6075
|
-
};
|
6076
|
-
}
|
6077
|
-
|
6078
|
-
var dropdownCss = this.options.get('dropdownCss') || {};
|
6079
|
-
|
6080
|
-
if ($.isFunction(dropdownCss)) {
|
6081
|
-
dropdownCss = dropdownCss(this.$element);
|
6082
|
-
}
|
6083
|
-
|
6084
|
-
CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
|
6085
|
-
|
6086
|
-
$dropdown.css(dropdownCss);
|
6087
|
-
$dropdown.addClass(dropdownCssClass);
|
6088
|
-
|
6089
|
-
return $dropdown;
|
6090
|
-
};
|
6091
|
-
|
6092
|
-
return DropdownCSS;
|
6093
|
-
});
|
6094
|
-
|
6095
|
-
S2.define('select2/compat/initSelection',[
|
6096
|
-
'jquery'
|
6097
|
-
], function ($) {
|
6098
|
-
function InitSelection (decorated, $element, options) {
|
6099
|
-
if (options.get('debug') && window.console && console.warn) {
|
6100
|
-
console.warn(
|
6101
|
-
'Select2: The `initSelection` option has been deprecated in favor' +
|
6102
|
-
' of a custom data adapter that overrides the `current` method. ' +
|
6103
|
-
'This method is now called multiple times instead of a single ' +
|
6104
|
-
'time when the instance is initialized. Support will be removed ' +
|
6105
|
-
'for the `initSelection` option in future versions of Select2'
|
6106
|
-
);
|
6107
|
-
}
|
6108
|
-
|
6109
|
-
this.initSelection = options.get('initSelection');
|
6110
|
-
this._isInitialized = false;
|
6111
|
-
|
6112
|
-
decorated.call(this, $element, options);
|
6113
|
-
}
|
6114
|
-
|
6115
|
-
InitSelection.prototype.current = function (decorated, callback) {
|
6116
|
-
var self = this;
|
6117
|
-
|
6118
|
-
if (this._isInitialized) {
|
6119
|
-
decorated.call(this, callback);
|
6120
|
-
|
6121
|
-
return;
|
6122
|
-
}
|
6123
|
-
|
6124
|
-
this.initSelection.call(null, this.$element, function (data) {
|
6125
|
-
self._isInitialized = true;
|
6126
|
-
|
6127
|
-
if (!$.isArray(data)) {
|
6128
|
-
data = [data];
|
6129
|
-
}
|
6130
|
-
|
6131
|
-
callback(data);
|
6132
|
-
});
|
6133
|
-
};
|
6134
|
-
|
6135
|
-
return InitSelection;
|
6136
|
-
});
|
6137
|
-
|
6138
|
-
S2.define('select2/compat/inputData',[
|
6139
|
-
'jquery',
|
6140
|
-
'../utils'
|
6141
|
-
], function ($, Utils) {
|
6142
|
-
function InputData (decorated, $element, options) {
|
6143
|
-
this._currentData = [];
|
6144
|
-
this._valueSeparator = options.get('valueSeparator') || ',';
|
6145
|
-
|
6146
|
-
if ($element.prop('type') === 'hidden') {
|
6147
|
-
if (options.get('debug') && console && console.warn) {
|
6148
|
-
console.warn(
|
6149
|
-
'Select2: Using a hidden input with Select2 is no longer ' +
|
6150
|
-
'supported and may stop working in the future. It is recommended ' +
|
6151
|
-
'to use a `<select>` element instead.'
|
6152
|
-
);
|
6153
|
-
}
|
6154
|
-
}
|
6155
|
-
|
6156
|
-
decorated.call(this, $element, options);
|
6157
|
-
}
|
6158
|
-
|
6159
|
-
InputData.prototype.current = function (_, callback) {
|
6160
|
-
function getSelected (data, selectedIds) {
|
6161
|
-
var selected = [];
|
6162
|
-
|
6163
|
-
if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
|
6164
|
-
data.selected = true;
|
6165
|
-
selected.push(data);
|
6166
|
-
} else {
|
6167
|
-
data.selected = false;
|
6168
|
-
}
|
6169
|
-
|
6170
|
-
if (data.children) {
|
6171
|
-
selected.push.apply(selected, getSelected(data.children, selectedIds));
|
6172
|
-
}
|
6173
|
-
|
6174
|
-
return selected;
|
6175
|
-
}
|
6176
|
-
|
6177
|
-
var selected = [];
|
6178
|
-
|
6179
|
-
for (var d = 0; d < this._currentData.length; d++) {
|
6180
|
-
var data = this._currentData[d];
|
6181
|
-
|
6182
|
-
selected.push.apply(
|
6183
|
-
selected,
|
6184
|
-
getSelected(
|
6185
|
-
data,
|
6186
|
-
this.$element.val().split(
|
6187
|
-
this._valueSeparator
|
6188
|
-
)
|
6189
|
-
)
|
6190
|
-
);
|
6191
|
-
}
|
6192
|
-
|
6193
|
-
callback(selected);
|
6194
|
-
};
|
6195
|
-
|
6196
|
-
InputData.prototype.select = function (_, data) {
|
6197
|
-
if (!this.options.get('multiple')) {
|
6198
|
-
this.current(function (allData) {
|
6199
|
-
$.map(allData, function (data) {
|
6200
|
-
data.selected = false;
|
6201
|
-
});
|
6202
|
-
});
|
6203
|
-
|
6204
|
-
this.$element.val(data.id);
|
6205
|
-
this.$element.trigger('change');
|
6206
|
-
} else {
|
6207
|
-
var value = this.$element.val();
|
6208
|
-
value += this._valueSeparator + data.id;
|
6209
|
-
|
6210
|
-
this.$element.val(value);
|
6211
|
-
this.$element.trigger('change');
|
6212
|
-
}
|
6213
|
-
};
|
6214
|
-
|
6215
|
-
InputData.prototype.unselect = function (_, data) {
|
6216
|
-
var self = this;
|
6217
|
-
|
6218
|
-
data.selected = false;
|
6219
|
-
|
6220
|
-
this.current(function (allData) {
|
6221
|
-
var values = [];
|
6222
|
-
|
6223
|
-
for (var d = 0; d < allData.length; d++) {
|
6224
|
-
var item = allData[d];
|
6225
|
-
|
6226
|
-
if (data.id == item.id) {
|
6227
|
-
continue;
|
6228
|
-
}
|
6229
|
-
|
6230
|
-
values.push(item.id);
|
6231
|
-
}
|
6232
|
-
|
6233
|
-
self.$element.val(values.join(self._valueSeparator));
|
6234
|
-
self.$element.trigger('change');
|
6235
|
-
});
|
6236
|
-
};
|
6237
|
-
|
6238
|
-
InputData.prototype.query = function (_, params, callback) {
|
6239
|
-
var results = [];
|
6240
|
-
|
6241
|
-
for (var d = 0; d < this._currentData.length; d++) {
|
6242
|
-
var data = this._currentData[d];
|
6243
|
-
|
6244
|
-
var matches = this.matches(params, data);
|
6245
|
-
|
6246
|
-
if (matches !== null) {
|
6247
|
-
results.push(matches);
|
6248
|
-
}
|
6249
|
-
}
|
6250
|
-
|
6251
|
-
callback({
|
6252
|
-
results: results
|
6253
|
-
});
|
6254
|
-
};
|
6255
|
-
|
6256
|
-
InputData.prototype.addOptions = function (_, $options) {
|
6257
|
-
var options = $.map($options, function ($option) {
|
6258
|
-
return Utils.GetData($option[0], 'data');
|
6259
|
-
});
|
6260
|
-
|
6261
|
-
this._currentData.push.apply(this._currentData, options);
|
6262
|
-
};
|
6263
|
-
|
6264
|
-
return InputData;
|
6265
|
-
});
|
6266
|
-
|
6267
|
-
S2.define('select2/compat/matcher',[
|
6268
|
-
'jquery'
|
6269
|
-
], function ($) {
|
6270
|
-
function oldMatcher (matcher) {
|
6271
|
-
function wrappedMatcher (params, data) {
|
6272
|
-
var match = $.extend(true, {}, data);
|
6273
|
-
|
6274
|
-
if (params.term == null || $.trim(params.term) === '') {
|
6275
|
-
return match;
|
6276
|
-
}
|
6277
|
-
|
6278
|
-
if (data.children) {
|
6279
|
-
for (var c = data.children.length - 1; c >= 0; c--) {
|
6280
|
-
var child = data.children[c];
|
6281
|
-
|
6282
|
-
// Check if the child object matches
|
6283
|
-
// The old matcher returned a boolean true or false
|
6284
|
-
var doesMatch = matcher(params.term, child.text, child);
|
6285
|
-
|
6286
|
-
// If the child didn't match, pop it off
|
6287
|
-
if (!doesMatch) {
|
6288
|
-
match.children.splice(c, 1);
|
6289
|
-
}
|
6290
|
-
}
|
6291
|
-
|
6292
|
-
if (match.children.length > 0) {
|
6293
|
-
return match;
|
6294
|
-
}
|
6295
|
-
}
|
6296
|
-
|
6297
|
-
if (matcher(params.term, data.text, data)) {
|
6298
|
-
return match;
|
6299
|
-
}
|
6300
|
-
|
6301
|
-
return null;
|
6302
|
-
}
|
6303
|
-
|
6304
|
-
return wrappedMatcher;
|
6305
|
-
}
|
6306
|
-
|
6307
|
-
return oldMatcher;
|
6308
|
-
});
|
6309
|
-
|
6310
|
-
S2.define('select2/compat/query',[
|
6311
|
-
|
6312
|
-
], function () {
|
6313
|
-
function Query (decorated, $element, options) {
|
6314
|
-
if (options.get('debug') && window.console && console.warn) {
|
6315
|
-
console.warn(
|
6316
|
-
'Select2: The `query` option has been deprecated in favor of a ' +
|
6317
|
-
'custom data adapter that overrides the `query` method. Support ' +
|
6318
|
-
'will be removed for the `query` option in future versions of ' +
|
6319
|
-
'Select2.'
|
6320
|
-
);
|
6321
|
-
}
|
6322
|
-
|
6323
|
-
decorated.call(this, $element, options);
|
6324
|
-
}
|
6325
|
-
|
6326
|
-
Query.prototype.query = function (_, params, callback) {
|
6327
|
-
params.callback = callback;
|
6328
|
-
|
6329
|
-
var query = this.options.get('query');
|
6330
|
-
|
6331
|
-
query.call(null, params);
|
6332
|
-
};
|
6333
|
-
|
6334
|
-
return Query;
|
6335
|
-
});
|
6336
|
-
|
6337
6063
|
S2.define('select2/dropdown/attachContainer',[
|
6338
6064
|
|
6339
6065
|
], function () {
|
@@ -6346,8 +6072,8 @@ S2.define('select2/dropdown/attachContainer',[
|
|
6346
6072
|
var $dropdownContainer = $container.find('.dropdown-wrapper');
|
6347
6073
|
$dropdownContainer.append($dropdown);
|
6348
6074
|
|
6349
|
-
$dropdown.
|
6350
|
-
$container.
|
6075
|
+
$dropdown[0].classList.add('select2-dropdown--below');
|
6076
|
+
$container[0].classList.add('select2-container--below');
|
6351
6077
|
};
|
6352
6078
|
|
6353
6079
|
return AttachContainer;
|
@@ -6694,7 +6420,7 @@ S2.define('jquery.select2',[
|
|
6694
6420
|
});
|
6695
6421
|
|
6696
6422
|
// Check if we should be returning `this`
|
6697
|
-
if (
|
6423
|
+
if (thisMethods.indexOf(options) > -1) {
|
6698
6424
|
return this;
|
6699
6425
|
}
|
6700
6426
|
|