select2-rails 4.0.13 → 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 +310 -671
- data/vendor/assets/javascripts/select2.js +308 -269
- 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 +1 -1
- 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
|
|
@@ -1595,7 +1612,7 @@ S2.define('select2/selection/single',[
|
|
1595
1612
|
SingleSelection.prototype.render = function () {
|
1596
1613
|
var $selection = SingleSelection.__super__.render.call(this);
|
1597
1614
|
|
1598
|
-
$selection.
|
1615
|
+
$selection[0].classList.add('select2-selection--single');
|
1599
1616
|
|
1600
1617
|
$selection.html(
|
1601
1618
|
'<span class="select2-selection__rendered"></span>' +
|
@@ -1702,7 +1719,7 @@ S2.define('select2/selection/multiple',[
|
|
1702
1719
|
MultipleSelection.prototype.render = function () {
|
1703
1720
|
var $selection = MultipleSelection.__super__.render.call(this);
|
1704
1721
|
|
1705
|
-
$selection.
|
1722
|
+
$selection[0].classList.add('select2-selection--multiple');
|
1706
1723
|
|
1707
1724
|
$selection.html(
|
1708
1725
|
'<ul class="select2-selection__rendered"></ul>'
|
@@ -1716,6 +1733,9 @@ S2.define('select2/selection/multiple',[
|
|
1716
1733
|
|
1717
1734
|
MultipleSelection.__super__.bind.apply(this, arguments);
|
1718
1735
|
|
1736
|
+
var id = container.id + '-container';
|
1737
|
+
this.$selection.find('.select2-selection__rendered').attr('id', id);
|
1738
|
+
|
1719
1739
|
this.$selection.on('click', function (evt) {
|
1720
1740
|
self.trigger('toggle', {
|
1721
1741
|
originalEvent: evt
|
@@ -1742,6 +1762,19 @@ S2.define('select2/selection/multiple',[
|
|
1742
1762
|
});
|
1743
1763
|
}
|
1744
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
|
+
);
|
1745
1778
|
};
|
1746
1779
|
|
1747
1780
|
MultipleSelection.prototype.clear = function () {
|
@@ -1760,9 +1793,11 @@ S2.define('select2/selection/multiple',[
|
|
1760
1793
|
MultipleSelection.prototype.selectionContainer = function () {
|
1761
1794
|
var $container = $(
|
1762
1795
|
'<li class="select2-selection__choice">' +
|
1763
|
-
'<
|
1764
|
-
|
1765
|
-
|
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>' +
|
1766
1801
|
'</li>'
|
1767
1802
|
);
|
1768
1803
|
|
@@ -1778,13 +1813,26 @@ S2.define('select2/selection/multiple',[
|
|
1778
1813
|
|
1779
1814
|
var $selections = [];
|
1780
1815
|
|
1816
|
+
var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')
|
1817
|
+
.attr('id') + '-choice-';
|
1818
|
+
|
1781
1819
|
for (var d = 0; d < data.length; d++) {
|
1782
1820
|
var selection = data[d];
|
1783
1821
|
|
1784
1822
|
var $selection = this.selectionContainer();
|
1785
1823
|
var formatted = this.display(selection, $selection);
|
1786
1824
|
|
1787
|
-
|
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);
|
1788
1836
|
|
1789
1837
|
var title = selection.title || selection.text;
|
1790
1838
|
|
@@ -1792,6 +1840,14 @@ S2.define('select2/selection/multiple',[
|
|
1792
1840
|
$selection.attr('title', title);
|
1793
1841
|
}
|
1794
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
|
+
|
1795
1851
|
Utils.StoreData($selection[0], 'data', selection);
|
1796
1852
|
|
1797
1853
|
$selections.push($selection);
|
@@ -1799,15 +1855,15 @@ S2.define('select2/selection/multiple',[
|
|
1799
1855
|
|
1800
1856
|
var $rendered = this.$selection.find('.select2-selection__rendered');
|
1801
1857
|
|
1802
|
-
|
1858
|
+
$rendered.append($selections);
|
1803
1859
|
};
|
1804
1860
|
|
1805
1861
|
return MultipleSelection;
|
1806
1862
|
});
|
1807
1863
|
|
1808
1864
|
S2.define('select2/selection/placeholder',[
|
1809
|
-
|
1810
|
-
], function (
|
1865
|
+
|
1866
|
+
], function () {
|
1811
1867
|
function Placeholder (decorated, $element, options) {
|
1812
1868
|
this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
|
1813
1869
|
|
@@ -1829,8 +1885,8 @@ S2.define('select2/selection/placeholder',[
|
|
1829
1885
|
var $placeholder = this.selectionContainer();
|
1830
1886
|
|
1831
1887
|
$placeholder.html(this.display(placeholder));
|
1832
|
-
$placeholder.
|
1833
|
-
|
1888
|
+
$placeholder[0].classList.add('select2-selection__placeholder');
|
1889
|
+
$placeholder[0].classList.remove('select2-selection__choice');
|
1834
1890
|
|
1835
1891
|
return $placeholder;
|
1836
1892
|
};
|
@@ -1949,21 +2005,29 @@ S2.define('select2/selection/allowClear',[
|
|
1949
2005
|
AllowClear.prototype.update = function (decorated, data) {
|
1950
2006
|
decorated.call(this, data);
|
1951
2007
|
|
2008
|
+
this.$selection.find('.select2-selection__clear').remove();
|
2009
|
+
|
1952
2010
|
if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
|
1953
2011
|
data.length === 0) {
|
1954
2012
|
return;
|
1955
2013
|
}
|
1956
2014
|
|
2015
|
+
var selectionId = this.$selection.find('.select2-selection__rendered')
|
2016
|
+
.attr('id');
|
2017
|
+
|
1957
2018
|
var removeAll = this.options.get('translations').get('removeAllItems');
|
1958
2019
|
|
1959
2020
|
var $remove = $(
|
1960
|
-
'<
|
1961
|
-
'
|
1962
|
-
'</
|
2021
|
+
'<button type="button" class="select2-selection__clear" tabindex="-1">' +
|
2022
|
+
'<span aria-hidden="true">×</span>' +
|
2023
|
+
'</button>'
|
1963
2024
|
);
|
2025
|
+
$remove.attr('title', removeAll());
|
2026
|
+
$remove.attr('aria-label', removeAll());
|
2027
|
+
$remove.attr('aria-describedby', selectionId);
|
1964
2028
|
Utils.StoreData($remove[0], 'data', data);
|
1965
2029
|
|
1966
|
-
this.$selection.
|
2030
|
+
this.$selection.prepend($remove);
|
1967
2031
|
};
|
1968
2032
|
|
1969
2033
|
return AllowClear;
|
@@ -1980,19 +2044,22 @@ S2.define('select2/selection/search',[
|
|
1980
2044
|
|
1981
2045
|
Search.prototype.render = function (decorated) {
|
1982
2046
|
var $search = $(
|
1983
|
-
'<
|
2047
|
+
'<span class="select2-search select2-search--inline">' +
|
1984
2048
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
1985
|
-
'
|
2049
|
+
' autocorrect="off" autocapitalize="none"' +
|
1986
2050
|
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
1987
|
-
'</
|
2051
|
+
'</span>'
|
1988
2052
|
);
|
1989
2053
|
|
1990
2054
|
this.$searchContainer = $search;
|
1991
2055
|
this.$search = $search.find('input');
|
1992
2056
|
|
2057
|
+
this.$search.prop('autocomplete', this.options.get('autocomplete'));
|
2058
|
+
|
1993
2059
|
var $rendered = decorated.call(this);
|
1994
2060
|
|
1995
2061
|
this._transferTabIndex();
|
2062
|
+
$rendered.append(this.$searchContainer);
|
1996
2063
|
|
1997
2064
|
return $rendered;
|
1998
2065
|
};
|
@@ -2001,9 +2068,12 @@ S2.define('select2/selection/search',[
|
|
2001
2068
|
var self = this;
|
2002
2069
|
|
2003
2070
|
var resultsId = container.id + '-results';
|
2071
|
+
var selectionId = container.id + '-container';
|
2004
2072
|
|
2005
2073
|
decorated.call(this, container, $container);
|
2006
2074
|
|
2075
|
+
self.$search.attr('aria-describedby', selectionId);
|
2076
|
+
|
2007
2077
|
container.on('open', function () {
|
2008
2078
|
self.$search.attr('aria-controls', resultsId);
|
2009
2079
|
self.$search.trigger('focus');
|
@@ -2011,6 +2081,7 @@ S2.define('select2/selection/search',[
|
|
2011
2081
|
|
2012
2082
|
container.on('close', function () {
|
2013
2083
|
self.$search.val('');
|
2084
|
+
self.resizeSearch();
|
2014
2085
|
self.$search.removeAttr('aria-controls');
|
2015
2086
|
self.$search.removeAttr('aria-activedescendant');
|
2016
2087
|
self.$search.trigger('focus');
|
@@ -2056,8 +2127,8 @@ S2.define('select2/selection/search',[
|
|
2056
2127
|
var key = evt.which;
|
2057
2128
|
|
2058
2129
|
if (key === KEYS.BACKSPACE && self.$search.val() === '') {
|
2059
|
-
var $previousChoice = self.$
|
2060
|
-
.
|
2130
|
+
var $previousChoice = self.$selection
|
2131
|
+
.find('.select2-selection__choice').last();
|
2061
2132
|
|
2062
2133
|
if ($previousChoice.length > 0) {
|
2063
2134
|
var item = Utils.GetData($previousChoice[0], 'data');
|
@@ -2155,9 +2226,6 @@ S2.define('select2/selection/search',[
|
|
2155
2226
|
|
2156
2227
|
decorated.call(this, data);
|
2157
2228
|
|
2158
|
-
this.$selection.find('.select2-selection__rendered')
|
2159
|
-
.append(this.$searchContainer);
|
2160
|
-
|
2161
2229
|
this.resizeSearch();
|
2162
2230
|
if (searchHadFocus) {
|
2163
2231
|
this.$search.trigger('focus');
|
@@ -2190,11 +2258,9 @@ S2.define('select2/selection/search',[
|
|
2190
2258
|
Search.prototype.resizeSearch = function () {
|
2191
2259
|
this.$search.css('width', '25px');
|
2192
2260
|
|
2193
|
-
var width = '';
|
2261
|
+
var width = '100%';
|
2194
2262
|
|
2195
|
-
if (this.$search.attr('placeholder')
|
2196
|
-
width = this.$selection.find('.select2-selection__rendered').width();
|
2197
|
-
} else {
|
2263
|
+
if (this.$search.attr('placeholder') === '') {
|
2198
2264
|
var minimumWidth = this.$search.val().length + 1;
|
2199
2265
|
|
2200
2266
|
width = (minimumWidth * 0.75) + 'em';
|
@@ -2206,6 +2272,30 @@ S2.define('select2/selection/search',[
|
|
2206
2272
|
return Search;
|
2207
2273
|
});
|
2208
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
|
+
|
2209
2299
|
S2.define('select2/selection/eventRelay',[
|
2210
2300
|
'jquery'
|
2211
2301
|
], function ($) {
|
@@ -2229,7 +2319,7 @@ S2.define('select2/selection/eventRelay',[
|
|
2229
2319
|
|
2230
2320
|
container.on('*', function (name, params) {
|
2231
2321
|
// Ignore events that should not be relayed
|
2232
|
-
if (
|
2322
|
+
if (relayEvents.indexOf(name) === -1) {
|
2233
2323
|
return;
|
2234
2324
|
}
|
2235
2325
|
|
@@ -2244,7 +2334,7 @@ S2.define('select2/selection/eventRelay',[
|
|
2244
2334
|
self.$element.trigger(evt);
|
2245
2335
|
|
2246
2336
|
// Only handle preventable events if it was one
|
2247
|
-
if (
|
2337
|
+
if (preventableEvents.indexOf(name) === -1) {
|
2248
2338
|
return;
|
2249
2339
|
}
|
2250
2340
|
|
@@ -3199,16 +3289,14 @@ S2.define('select2/data/select',[
|
|
3199
3289
|
Utils.Extend(SelectAdapter, BaseAdapter);
|
3200
3290
|
|
3201
3291
|
SelectAdapter.prototype.current = function (callback) {
|
3202
|
-
var data = [];
|
3203
3292
|
var self = this;
|
3204
3293
|
|
3205
|
-
|
3206
|
-
|
3207
|
-
|
3208
|
-
|
3209
|
-
|
3210
|
-
|
3211
|
-
});
|
3294
|
+
var data = Array.prototype.map.call(
|
3295
|
+
this.$element[0].querySelectorAll(':checked'),
|
3296
|
+
function (selectedElement) {
|
3297
|
+
return self.item($(selectedElement));
|
3298
|
+
}
|
3299
|
+
);
|
3212
3300
|
|
3213
3301
|
callback(data);
|
3214
3302
|
};
|
@@ -3219,7 +3307,9 @@ S2.define('select2/data/select',[
|
|
3219
3307
|
data.selected = true;
|
3220
3308
|
|
3221
3309
|
// If data.element is a DOM node, use it instead
|
3222
|
-
if (
|
3310
|
+
if (
|
3311
|
+
data.element != null && data.element.tagName.toLowerCase() === 'option'
|
3312
|
+
) {
|
3223
3313
|
data.element.selected = true;
|
3224
3314
|
|
3225
3315
|
this.$element.trigger('input').trigger('change');
|
@@ -3237,7 +3327,7 @@ S2.define('select2/data/select',[
|
|
3237
3327
|
for (var d = 0; d < data.length; d++) {
|
3238
3328
|
var id = data[d].id;
|
3239
3329
|
|
3240
|
-
if (
|
3330
|
+
if (val.indexOf(id) === -1) {
|
3241
3331
|
val.push(id);
|
3242
3332
|
}
|
3243
3333
|
}
|
@@ -3262,7 +3352,10 @@ S2.define('select2/data/select',[
|
|
3262
3352
|
|
3263
3353
|
data.selected = false;
|
3264
3354
|
|
3265
|
-
if (
|
3355
|
+
if (
|
3356
|
+
data.element != null &&
|
3357
|
+
data.element.tagName.toLowerCase() === 'option'
|
3358
|
+
) {
|
3266
3359
|
data.element.selected = false;
|
3267
3360
|
|
3268
3361
|
this.$element.trigger('input').trigger('change');
|
@@ -3276,7 +3369,7 @@ S2.define('select2/data/select',[
|
|
3276
3369
|
for (var d = 0; d < currentData.length; d++) {
|
3277
3370
|
var id = currentData[d].id;
|
3278
3371
|
|
3279
|
-
if (id !== data.id &&
|
3372
|
+
if (id !== data.id && val.indexOf(id) === -1) {
|
3280
3373
|
val.push(id);
|
3281
3374
|
}
|
3282
3375
|
}
|
@@ -3316,12 +3409,15 @@ S2.define('select2/data/select',[
|
|
3316
3409
|
var $options = this.$element.children();
|
3317
3410
|
|
3318
3411
|
$options.each(function () {
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3412
|
+
if (
|
3413
|
+
this.tagName.toLowerCase() !== 'option' &&
|
3414
|
+
this.tagName.toLowerCase() !== 'optgroup'
|
3415
|
+
) {
|
3322
3416
|
return;
|
3323
3417
|
}
|
3324
3418
|
|
3419
|
+
var $option = $(this);
|
3420
|
+
|
3325
3421
|
var option = self.item($option);
|
3326
3422
|
|
3327
3423
|
var matches = self.matches(params, option);
|
@@ -3337,7 +3433,7 @@ S2.define('select2/data/select',[
|
|
3337
3433
|
};
|
3338
3434
|
|
3339
3435
|
SelectAdapter.prototype.addOptions = function ($options) {
|
3340
|
-
|
3436
|
+
this.$element.append($options);
|
3341
3437
|
};
|
3342
3438
|
|
3343
3439
|
SelectAdapter.prototype.option = function (data) {
|
@@ -3372,15 +3468,13 @@ S2.define('select2/data/select',[
|
|
3372
3468
|
option.title = data.title;
|
3373
3469
|
}
|
3374
3470
|
|
3375
|
-
var $option = $(option);
|
3376
|
-
|
3377
3471
|
var normalizedData = this._normalizeItem(data);
|
3378
3472
|
normalizedData.element = option;
|
3379
3473
|
|
3380
3474
|
// Override the option's data with the combined data
|
3381
3475
|
Utils.StoreData(option, 'data', normalizedData);
|
3382
3476
|
|
3383
|
-
return $option;
|
3477
|
+
return $(option);
|
3384
3478
|
};
|
3385
3479
|
|
3386
3480
|
SelectAdapter.prototype.item = function ($option) {
|
@@ -3392,7 +3486,9 @@ S2.define('select2/data/select',[
|
|
3392
3486
|
return data;
|
3393
3487
|
}
|
3394
3488
|
|
3395
|
-
|
3489
|
+
var option = $option[0];
|
3490
|
+
|
3491
|
+
if (option.tagName.toLowerCase() === 'option') {
|
3396
3492
|
data = {
|
3397
3493
|
id: $option.val(),
|
3398
3494
|
text: $option.text(),
|
@@ -3400,7 +3496,7 @@ S2.define('select2/data/select',[
|
|
3400
3496
|
selected: $option.prop('selected'),
|
3401
3497
|
title: $option.prop('title')
|
3402
3498
|
};
|
3403
|
-
} else if (
|
3499
|
+
} else if (option.tagName.toLowerCase() === 'optgroup') {
|
3404
3500
|
data = {
|
3405
3501
|
text: $option.prop('label'),
|
3406
3502
|
children: [],
|
@@ -3524,7 +3620,7 @@ S2.define('select2/data/array',[
|
|
3524
3620
|
var item = this._normalizeItem(data[d]);
|
3525
3621
|
|
3526
3622
|
// Skip items which were pre-loaded, only merge the data
|
3527
|
-
if (
|
3623
|
+
if (existingIds.indexOf(item.id) >= 0) {
|
3528
3624
|
var $existingOption = $existing.filter(onlyItem(item));
|
3529
3625
|
|
3530
3626
|
var existingData = this.item($existingOption);
|
@@ -3542,7 +3638,7 @@ S2.define('select2/data/array',[
|
|
3542
3638
|
if (item.children) {
|
3543
3639
|
var $children = this.convertToOptions(item.children);
|
3544
3640
|
|
3545
|
-
|
3641
|
+
$option.append($children);
|
3546
3642
|
}
|
3547
3643
|
|
3548
3644
|
$options.push($option);
|
@@ -3626,7 +3722,7 @@ S2.define('select2/data/ajax',[
|
|
3626
3722
|
|
3627
3723
|
if (self.options.get('debug') && window.console && console.error) {
|
3628
3724
|
// Check to make sure that the response included a `results` key.
|
3629
|
-
if (!results || !results.results ||
|
3725
|
+
if (!results || !results.results || !Array.isArray(results.results)) {
|
3630
3726
|
console.error(
|
3631
3727
|
'Select2: The AJAX results did not return an array in the ' +
|
3632
3728
|
'`results` key of the response.'
|
@@ -3685,7 +3781,7 @@ S2.define('select2/data/tags',[
|
|
3685
3781
|
|
3686
3782
|
decorated.call(this, $element, options);
|
3687
3783
|
|
3688
|
-
if (
|
3784
|
+
if (Array.isArray(tags)) {
|
3689
3785
|
for (var t = 0; t < tags.length; t++) {
|
3690
3786
|
var tag = tags[t];
|
3691
3787
|
var item = this._normalizeItem(tag);
|
@@ -3761,7 +3857,11 @@ S2.define('select2/data/tags',[
|
|
3761
3857
|
};
|
3762
3858
|
|
3763
3859
|
Tags.prototype.createTag = function (decorated, params) {
|
3764
|
-
|
3860
|
+
if (params.term == null) {
|
3861
|
+
return null;
|
3862
|
+
}
|
3863
|
+
|
3864
|
+
var term = params.term.trim();
|
3765
3865
|
|
3766
3866
|
if (term === '') {
|
3767
3867
|
return null;
|
@@ -3876,7 +3976,7 @@ S2.define('select2/data/tokenizer',[
|
|
3876
3976
|
while (i < term.length) {
|
3877
3977
|
var termChar = term[i];
|
3878
3978
|
|
3879
|
-
if (
|
3979
|
+
if (separators.indexOf(termChar) === -1) {
|
3880
3980
|
i++;
|
3881
3981
|
|
3882
3982
|
continue;
|
@@ -4071,9 +4171,8 @@ S2.define('select2/dropdown',[
|
|
4071
4171
|
});
|
4072
4172
|
|
4073
4173
|
S2.define('select2/dropdown/search',[
|
4074
|
-
'jquery'
|
4075
|
-
|
4076
|
-
], function ($, Utils) {
|
4174
|
+
'jquery'
|
4175
|
+
], function ($) {
|
4077
4176
|
function Search () { }
|
4078
4177
|
|
4079
4178
|
Search.prototype.render = function (decorated) {
|
@@ -4082,7 +4181,7 @@ S2.define('select2/dropdown/search',[
|
|
4082
4181
|
var $search = $(
|
4083
4182
|
'<span class="select2-search select2-search--dropdown">' +
|
4084
4183
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
4085
|
-
'
|
4184
|
+
' autocorrect="off" autocapitalize="none"' +
|
4086
4185
|
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
4087
4186
|
'</span>'
|
4088
4187
|
);
|
@@ -4090,6 +4189,8 @@ S2.define('select2/dropdown/search',[
|
|
4090
4189
|
this.$searchContainer = $search;
|
4091
4190
|
this.$search = $search.find('input');
|
4092
4191
|
|
4192
|
+
this.$search.prop('autocomplete', this.options.get('autocomplete'));
|
4193
|
+
|
4093
4194
|
$rendered.prepend($search);
|
4094
4195
|
|
4095
4196
|
return $rendered;
|
@@ -4151,9 +4252,9 @@ S2.define('select2/dropdown/search',[
|
|
4151
4252
|
var showSearch = self.showSearch(params);
|
4152
4253
|
|
4153
4254
|
if (showSearch) {
|
4154
|
-
self.$searchContainer.
|
4255
|
+
self.$searchContainer[0].classList.remove('select2-search--hide');
|
4155
4256
|
} else {
|
4156
|
-
self.$searchContainer.
|
4257
|
+
self.$searchContainer[0].classList.add('select2-search--hide');
|
4157
4258
|
}
|
4158
4259
|
}
|
4159
4260
|
});
|
@@ -4365,8 +4466,8 @@ S2.define('select2/dropdown/attachBody',[
|
|
4365
4466
|
// Clone all of the container classes
|
4366
4467
|
$dropdown.attr('class', $container.attr('class'));
|
4367
4468
|
|
4368
|
-
$dropdown.
|
4369
|
-
$dropdown.
|
4469
|
+
$dropdown[0].classList.remove('select2');
|
4470
|
+
$dropdown[0].classList.add('select2-container--open');
|
4370
4471
|
|
4371
4472
|
$dropdown.css({
|
4372
4473
|
position: 'absolute',
|
@@ -4472,8 +4573,10 @@ S2.define('select2/dropdown/attachBody',[
|
|
4472
4573
|
AttachBody.prototype._positionDropdown = function () {
|
4473
4574
|
var $window = $(window);
|
4474
4575
|
|
4475
|
-
var isCurrentlyAbove = this.$dropdown.
|
4476
|
-
|
4576
|
+
var isCurrentlyAbove = this.$dropdown[0].classList
|
4577
|
+
.contains('select2-dropdown--above');
|
4578
|
+
var isCurrentlyBelow = this.$dropdown[0].classList
|
4579
|
+
.contains('select2-dropdown--below');
|
4477
4580
|
|
4478
4581
|
var newDirection = null;
|
4479
4582
|
|
@@ -4545,12 +4648,13 @@ S2.define('select2/dropdown/attachBody',[
|
|
4545
4648
|
}
|
4546
4649
|
|
4547
4650
|
if (newDirection != null) {
|
4548
|
-
this.$dropdown
|
4549
|
-
|
4550
|
-
|
4551
|
-
|
4552
|
-
|
4553
|
-
|
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);
|
4554
4658
|
}
|
4555
4659
|
|
4556
4660
|
this.$dropdownContainer.css(css);
|
@@ -4707,6 +4811,30 @@ S2.define('select2/dropdown/closeOnSelect',[
|
|
4707
4811
|
return CloseOnSelect;
|
4708
4812
|
});
|
4709
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
|
+
|
4710
4838
|
S2.define('select2/i18n/en',[],function () {
|
4711
4839
|
// English
|
4712
4840
|
return {
|
@@ -4751,13 +4879,15 @@ S2.define('select2/i18n/en',[],function () {
|
|
4751
4879
|
},
|
4752
4880
|
removeAllItems: function () {
|
4753
4881
|
return 'Remove all items';
|
4882
|
+
},
|
4883
|
+
removeItem: function () {
|
4884
|
+
return 'Remove item';
|
4754
4885
|
}
|
4755
4886
|
};
|
4756
4887
|
});
|
4757
4888
|
|
4758
4889
|
S2.define('select2/defaults',[
|
4759
4890
|
'jquery',
|
4760
|
-
'require',
|
4761
4891
|
|
4762
4892
|
'./results',
|
4763
4893
|
|
@@ -4766,6 +4896,7 @@ S2.define('select2/defaults',[
|
|
4766
4896
|
'./selection/placeholder',
|
4767
4897
|
'./selection/allowClear',
|
4768
4898
|
'./selection/search',
|
4899
|
+
'./selection/selectionCss',
|
4769
4900
|
'./selection/eventRelay',
|
4770
4901
|
|
4771
4902
|
'./utils',
|
@@ -4789,14 +4920,15 @@ S2.define('select2/defaults',[
|
|
4789
4920
|
'./dropdown/minimumResultsForSearch',
|
4790
4921
|
'./dropdown/selectOnClose',
|
4791
4922
|
'./dropdown/closeOnSelect',
|
4923
|
+
'./dropdown/dropdownCss',
|
4792
4924
|
|
4793
4925
|
'./i18n/en'
|
4794
|
-
], function ($,
|
4926
|
+
], function ($,
|
4795
4927
|
|
4796
4928
|
ResultsList,
|
4797
4929
|
|
4798
4930
|
SingleSelection, MultipleSelection, Placeholder, AllowClear,
|
4799
|
-
SelectionSearch, EventRelay,
|
4931
|
+
SelectionSearch, SelectionCSS, EventRelay,
|
4800
4932
|
|
4801
4933
|
Utils, Translation, DIACRITICS,
|
4802
4934
|
|
@@ -4805,6 +4937,7 @@ S2.define('select2/defaults',[
|
|
4805
4937
|
|
4806
4938
|
Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
|
4807
4939
|
AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
|
4940
|
+
DropdownCSS,
|
4808
4941
|
|
4809
4942
|
EnglishTranslation) {
|
4810
4943
|
function Defaults () {
|
@@ -4854,24 +4987,6 @@ S2.define('select2/defaults',[
|
|
4854
4987
|
Tokenizer
|
4855
4988
|
);
|
4856
4989
|
}
|
4857
|
-
|
4858
|
-
if (options.query != null) {
|
4859
|
-
var Query = require(options.amdBase + 'compat/query');
|
4860
|
-
|
4861
|
-
options.dataAdapter = Utils.Decorate(
|
4862
|
-
options.dataAdapter,
|
4863
|
-
Query
|
4864
|
-
);
|
4865
|
-
}
|
4866
|
-
|
4867
|
-
if (options.initSelection != null) {
|
4868
|
-
var InitSelection = require(options.amdBase + 'compat/initSelection');
|
4869
|
-
|
4870
|
-
options.dataAdapter = Utils.Decorate(
|
4871
|
-
options.dataAdapter,
|
4872
|
-
InitSelection
|
4873
|
-
);
|
4874
|
-
}
|
4875
4990
|
}
|
4876
4991
|
|
4877
4992
|
if (options.resultsAdapter == null) {
|
@@ -4922,13 +5037,7 @@ S2.define('select2/defaults',[
|
|
4922
5037
|
);
|
4923
5038
|
}
|
4924
5039
|
|
4925
|
-
if (
|
4926
|
-
options.dropdownCssClass != null ||
|
4927
|
-
options.dropdownCss != null ||
|
4928
|
-
options.adaptDropdownCssClass != null
|
4929
|
-
) {
|
4930
|
-
var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
|
4931
|
-
|
5040
|
+
if (options.dropdownCssClass != null) {
|
4932
5041
|
options.dropdownAdapter = Utils.Decorate(
|
4933
5042
|
options.dropdownAdapter,
|
4934
5043
|
DropdownCSS
|
@@ -4970,16 +5079,10 @@ S2.define('select2/defaults',[
|
|
4970
5079
|
);
|
4971
5080
|
}
|
4972
5081
|
|
4973
|
-
if (
|
4974
|
-
options.containerCssClass != null ||
|
4975
|
-
options.containerCss != null ||
|
4976
|
-
options.adaptContainerCssClass != null
|
4977
|
-
) {
|
4978
|
-
var ContainerCSS = require(options.amdBase + 'compat/containerCss');
|
4979
|
-
|
5082
|
+
if (options.selectionCssClass != null) {
|
4980
5083
|
options.selectionAdapter = Utils.Decorate(
|
4981
5084
|
options.selectionAdapter,
|
4982
|
-
|
5085
|
+
SelectionCSS
|
4983
5086
|
);
|
4984
5087
|
}
|
4985
5088
|
|
@@ -5028,7 +5131,7 @@ S2.define('select2/defaults',[
|
|
5028
5131
|
|
5029
5132
|
function matcher (params, data) {
|
5030
5133
|
// Always return the object if there is nothing to compare
|
5031
|
-
if (
|
5134
|
+
if (params.term == null || params.term.trim() === '') {
|
5032
5135
|
return data;
|
5033
5136
|
}
|
5034
5137
|
|
@@ -5072,8 +5175,8 @@ S2.define('select2/defaults',[
|
|
5072
5175
|
}
|
5073
5176
|
|
5074
5177
|
this.defaults = {
|
5075
|
-
amdBase: './',
|
5076
5178
|
amdLanguageBase: './i18n/',
|
5179
|
+
autocomplete: 'off',
|
5077
5180
|
closeOnSelect: true,
|
5078
5181
|
debug: false,
|
5079
5182
|
dropdownAutoWidth: false,
|
@@ -5133,7 +5236,7 @@ S2.define('select2/defaults',[
|
|
5133
5236
|
|
5134
5237
|
var languages;
|
5135
5238
|
|
5136
|
-
if (
|
5239
|
+
if (!Array.isArray(language)) {
|
5137
5240
|
languages = [language];
|
5138
5241
|
} else {
|
5139
5242
|
languages = language;
|
@@ -5214,11 +5317,10 @@ S2.define('select2/defaults',[
|
|
5214
5317
|
});
|
5215
5318
|
|
5216
5319
|
S2.define('select2/options',[
|
5217
|
-
'require',
|
5218
5320
|
'jquery',
|
5219
5321
|
'./defaults',
|
5220
5322
|
'./utils'
|
5221
|
-
], function (
|
5323
|
+
], function ($, Defaults, Utils) {
|
5222
5324
|
function Options (options, $element) {
|
5223
5325
|
this.options = options;
|
5224
5326
|
|
@@ -5231,15 +5333,6 @@ S2.define('select2/options',[
|
|
5231
5333
|
}
|
5232
5334
|
|
5233
5335
|
this.options = Defaults.apply(this.options);
|
5234
|
-
|
5235
|
-
if ($element && $element.is('input')) {
|
5236
|
-
var InputCompat = require(this.get('amdBase') + 'compat/inputData');
|
5237
|
-
|
5238
|
-
this.options.dataAdapter = Utils.Decorate(
|
5239
|
-
this.options.dataAdapter,
|
5240
|
-
InputCompat
|
5241
|
-
);
|
5242
|
-
}
|
5243
5336
|
}
|
5244
5337
|
|
5245
5338
|
Options.prototype.fromElement = function ($e) {
|
@@ -5253,6 +5346,10 @@ S2.define('select2/options',[
|
|
5253
5346
|
this.options.disabled = $e.prop('disabled');
|
5254
5347
|
}
|
5255
5348
|
|
5349
|
+
if (this.options.autocomplete == null && $e.prop('autocomplete')) {
|
5350
|
+
this.options.autocomplete = $e.prop('autocomplete');
|
5351
|
+
}
|
5352
|
+
|
5256
5353
|
if (this.options.dir == null) {
|
5257
5354
|
if ($e.prop('dir')) {
|
5258
5355
|
this.options.dir = $e.prop('dir');
|
@@ -5331,7 +5428,7 @@ S2.define('select2/options',[
|
|
5331
5428
|
data = Utils._convertData(data);
|
5332
5429
|
|
5333
5430
|
for (var key in data) {
|
5334
|
-
if (
|
5431
|
+
if (excludedData.indexOf(key) > -1) {
|
5335
5432
|
continue;
|
5336
5433
|
}
|
5337
5434
|
|
@@ -5435,7 +5532,7 @@ S2.define('select2/core',[
|
|
5435
5532
|
});
|
5436
5533
|
|
5437
5534
|
// Hide the original select
|
5438
|
-
$element.
|
5535
|
+
$element[0].classList.add('select2-hidden-accessible');
|
5439
5536
|
$element.attr('aria-hidden', 'true');
|
5440
5537
|
|
5441
5538
|
// Synchronize any monitored attributes
|
@@ -5555,42 +5652,15 @@ S2.define('select2/core',[
|
|
5555
5652
|
this._syncA = Utils.bind(this._syncAttributes, this);
|
5556
5653
|
this._syncS = Utils.bind(this._syncSubtree, this);
|
5557
5654
|
|
5558
|
-
|
5559
|
-
|
5560
|
-
|
5561
|
-
|
5562
|
-
|
5563
|
-
|
5564
|
-
|
5565
|
-
|
5566
|
-
|
5567
|
-
if (observer != null) {
|
5568
|
-
this._observer = new observer(function (mutations) {
|
5569
|
-
self._syncA();
|
5570
|
-
self._syncS(null, mutations);
|
5571
|
-
});
|
5572
|
-
this._observer.observe(this.$element[0], {
|
5573
|
-
attributes: true,
|
5574
|
-
childList: true,
|
5575
|
-
subtree: false
|
5576
|
-
});
|
5577
|
-
} else if (this.$element[0].addEventListener) {
|
5578
|
-
this.$element[0].addEventListener(
|
5579
|
-
'DOMAttrModified',
|
5580
|
-
self._syncA,
|
5581
|
-
false
|
5582
|
-
);
|
5583
|
-
this.$element[0].addEventListener(
|
5584
|
-
'DOMNodeInserted',
|
5585
|
-
self._syncS,
|
5586
|
-
false
|
5587
|
-
);
|
5588
|
-
this.$element[0].addEventListener(
|
5589
|
-
'DOMNodeRemoved',
|
5590
|
-
self._syncS,
|
5591
|
-
false
|
5592
|
-
);
|
5593
|
-
}
|
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
|
+
});
|
5594
5664
|
};
|
5595
5665
|
|
5596
5666
|
Select2.prototype._registerDataEvents = function () {
|
@@ -5614,7 +5684,7 @@ S2.define('select2/core',[
|
|
5614
5684
|
});
|
5615
5685
|
|
5616
5686
|
this.selection.on('*', function (name, params) {
|
5617
|
-
if (
|
5687
|
+
if (nonRelayEvents.indexOf(name) !== -1) {
|
5618
5688
|
return;
|
5619
5689
|
}
|
5620
5690
|
|
@@ -5642,23 +5712,23 @@ S2.define('select2/core',[
|
|
5642
5712
|
var self = this;
|
5643
5713
|
|
5644
5714
|
this.on('open', function () {
|
5645
|
-
self.$container.
|
5715
|
+
self.$container[0].classList.add('select2-container--open');
|
5646
5716
|
});
|
5647
5717
|
|
5648
5718
|
this.on('close', function () {
|
5649
|
-
self.$container.
|
5719
|
+
self.$container[0].classList.remove('select2-container--open');
|
5650
5720
|
});
|
5651
5721
|
|
5652
5722
|
this.on('enable', function () {
|
5653
|
-
self.$container.
|
5723
|
+
self.$container[0].classList.remove('select2-container--disabled');
|
5654
5724
|
});
|
5655
5725
|
|
5656
5726
|
this.on('disable', function () {
|
5657
|
-
self.$container.
|
5727
|
+
self.$container[0].classList.add('select2-container--disabled');
|
5658
5728
|
});
|
5659
5729
|
|
5660
5730
|
this.on('blur', function () {
|
5661
|
-
self.$container.
|
5731
|
+
self.$container[0].classList.remove('select2-container--focus');
|
5662
5732
|
});
|
5663
5733
|
|
5664
5734
|
this.on('query', function (params) {
|
@@ -5734,49 +5804,30 @@ S2.define('select2/core',[
|
|
5734
5804
|
}
|
5735
5805
|
};
|
5736
5806
|
|
5737
|
-
Select2.prototype._isChangeMutation = function (
|
5738
|
-
var changed = false;
|
5807
|
+
Select2.prototype._isChangeMutation = function (mutations) {
|
5739
5808
|
var self = this;
|
5740
5809
|
|
5741
|
-
|
5742
|
-
// optgroups. This handles the case when the select element is destroyed
|
5743
|
-
if (
|
5744
|
-
evt && evt.target && (
|
5745
|
-
evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
|
5746
|
-
)
|
5747
|
-
) {
|
5748
|
-
return;
|
5749
|
-
}
|
5750
|
-
|
5751
|
-
if (!mutations) {
|
5752
|
-
// If mutation events aren't supported, then we can only assume that the
|
5753
|
-
// change affected the selections
|
5754
|
-
changed = true;
|
5755
|
-
} else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
|
5810
|
+
if (mutations.addedNodes && mutations.addedNodes.length > 0) {
|
5756
5811
|
for (var n = 0; n < mutations.addedNodes.length; n++) {
|
5757
5812
|
var node = mutations.addedNodes[n];
|
5758
5813
|
|
5759
5814
|
if (node.selected) {
|
5760
|
-
|
5815
|
+
return true;
|
5761
5816
|
}
|
5762
5817
|
}
|
5763
5818
|
} else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
|
5764
|
-
|
5765
|
-
} else if (
|
5766
|
-
|
5767
|
-
|
5768
|
-
// We've found a change mutation.
|
5769
|
-
// Let's escape from the loop and continue
|
5770
|
-
changed = true;
|
5771
|
-
return false;
|
5772
|
-
}
|
5819
|
+
return true;
|
5820
|
+
} else if (Array.isArray(mutations)) {
|
5821
|
+
return mutations.some(function (mutation) {
|
5822
|
+
return self._isChangeMutation(mutation);
|
5773
5823
|
});
|
5774
5824
|
}
|
5775
|
-
|
5825
|
+
|
5826
|
+
return false;
|
5776
5827
|
};
|
5777
5828
|
|
5778
|
-
Select2.prototype._syncSubtree = function (
|
5779
|
-
var changed = this._isChangeMutation(
|
5829
|
+
Select2.prototype._syncSubtree = function (mutations) {
|
5830
|
+
var changed = this._isChangeMutation(mutations);
|
5780
5831
|
var self = this;
|
5781
5832
|
|
5782
5833
|
// Only re-pull the data if we think there is a change
|
@@ -5881,11 +5932,11 @@ S2.define('select2/core',[
|
|
5881
5932
|
};
|
5882
5933
|
|
5883
5934
|
Select2.prototype.isOpen = function () {
|
5884
|
-
return this.$container.
|
5935
|
+
return this.$container[0].classList.contains('select2-container--open');
|
5885
5936
|
};
|
5886
5937
|
|
5887
5938
|
Select2.prototype.hasFocus = function () {
|
5888
|
-
return this.$container.
|
5939
|
+
return this.$container[0].classList.contains('select2-container--focus');
|
5889
5940
|
};
|
5890
5941
|
|
5891
5942
|
Select2.prototype.focus = function (data) {
|
@@ -5894,7 +5945,7 @@ S2.define('select2/core',[
|
|
5894
5945
|
return;
|
5895
5946
|
}
|
5896
5947
|
|
5897
|
-
this.$container.
|
5948
|
+
this.$container[0].classList.add('select2-container--focus');
|
5898
5949
|
this.trigger('focus', {});
|
5899
5950
|
};
|
5900
5951
|
|
@@ -5948,8 +5999,8 @@ S2.define('select2/core',[
|
|
5948
5999
|
|
5949
6000
|
var newVal = args[0];
|
5950
6001
|
|
5951
|
-
if (
|
5952
|
-
newVal =
|
6002
|
+
if (Array.isArray(newVal)) {
|
6003
|
+
newVal = newVal.map(function (obj) {
|
5953
6004
|
return obj.toString();
|
5954
6005
|
});
|
5955
6006
|
}
|
@@ -5960,21 +6011,8 @@ S2.define('select2/core',[
|
|
5960
6011
|
Select2.prototype.destroy = function () {
|
5961
6012
|
this.$container.remove();
|
5962
6013
|
|
5963
|
-
|
5964
|
-
|
5965
|
-
}
|
5966
|
-
|
5967
|
-
if (this._observer != null) {
|
5968
|
-
this._observer.disconnect();
|
5969
|
-
this._observer = null;
|
5970
|
-
} else if (this.$element[0].removeEventListener) {
|
5971
|
-
this.$element[0]
|
5972
|
-
.removeEventListener('DOMAttrModified', this._syncA, false);
|
5973
|
-
this.$element[0]
|
5974
|
-
.removeEventListener('DOMNodeInserted', this._syncS, false);
|
5975
|
-
this.$element[0]
|
5976
|
-
.removeEventListener('DOMNodeRemoved', this._syncS, false);
|
5977
|
-
}
|
6014
|
+
this._observer.disconnect();
|
6015
|
+
this._observer = null;
|
5978
6016
|
|
5979
6017
|
this._syncA = null;
|
5980
6018
|
this._syncS = null;
|
@@ -5983,7 +6021,7 @@ S2.define('select2/core',[
|
|
5983
6021
|
this.$element.attr('tabindex',
|
5984
6022
|
Utils.GetData(this.$element[0], 'old-tabindex'));
|
5985
6023
|
|
5986
|
-
this.$element.
|
6024
|
+
this.$element[0].classList.remove('select2-hidden-accessible');
|
5987
6025
|
this.$element.attr('aria-hidden', 'false');
|
5988
6026
|
Utils.RemoveData(this.$element[0]);
|
5989
6027
|
this.$element.removeData('select2');
|
@@ -6011,7 +6049,8 @@ S2.define('select2/core',[
|
|
6011
6049
|
|
6012
6050
|
this.$container = $container;
|
6013
6051
|
|
6014
|
-
this.$container.
|
6052
|
+
this.$container[0].classList
|
6053
|
+
.add('select2-container--' + this.options.get('theme'));
|
6015
6054
|
|
6016
6055
|
Utils.StoreData($container[0], 'element', this.$element);
|
6017
6056
|
|
@@ -6021,406 +6060,6 @@ S2.define('select2/core',[
|
|
6021
6060
|
return Select2;
|
6022
6061
|
});
|
6023
6062
|
|
6024
|
-
S2.define('select2/compat/utils',[
|
6025
|
-
'jquery'
|
6026
|
-
], function ($) {
|
6027
|
-
function syncCssClasses ($dest, $src, adapter) {
|
6028
|
-
var classes, replacements = [], adapted;
|
6029
|
-
|
6030
|
-
classes = $.trim($dest.attr('class'));
|
6031
|
-
|
6032
|
-
if (classes) {
|
6033
|
-
classes = '' + classes; // for IE which returns object
|
6034
|
-
|
6035
|
-
$(classes.split(/\s+/)).each(function () {
|
6036
|
-
// Save all Select2 classes
|
6037
|
-
if (this.indexOf('select2-') === 0) {
|
6038
|
-
replacements.push(this);
|
6039
|
-
}
|
6040
|
-
});
|
6041
|
-
}
|
6042
|
-
|
6043
|
-
classes = $.trim($src.attr('class'));
|
6044
|
-
|
6045
|
-
if (classes) {
|
6046
|
-
classes = '' + classes; // for IE which returns object
|
6047
|
-
|
6048
|
-
$(classes.split(/\s+/)).each(function () {
|
6049
|
-
// Only adapt non-Select2 classes
|
6050
|
-
if (this.indexOf('select2-') !== 0) {
|
6051
|
-
adapted = adapter(this);
|
6052
|
-
|
6053
|
-
if (adapted != null) {
|
6054
|
-
replacements.push(adapted);
|
6055
|
-
}
|
6056
|
-
}
|
6057
|
-
});
|
6058
|
-
}
|
6059
|
-
|
6060
|
-
$dest.attr('class', replacements.join(' '));
|
6061
|
-
}
|
6062
|
-
|
6063
|
-
return {
|
6064
|
-
syncCssClasses: syncCssClasses
|
6065
|
-
};
|
6066
|
-
});
|
6067
|
-
|
6068
|
-
S2.define('select2/compat/containerCss',[
|
6069
|
-
'jquery',
|
6070
|
-
'./utils'
|
6071
|
-
], function ($, CompatUtils) {
|
6072
|
-
// No-op CSS adapter that discards all classes by default
|
6073
|
-
function _containerAdapter (clazz) {
|
6074
|
-
return null;
|
6075
|
-
}
|
6076
|
-
|
6077
|
-
function ContainerCSS () { }
|
6078
|
-
|
6079
|
-
ContainerCSS.prototype.render = function (decorated) {
|
6080
|
-
var $container = decorated.call(this);
|
6081
|
-
|
6082
|
-
var containerCssClass = this.options.get('containerCssClass') || '';
|
6083
|
-
|
6084
|
-
if ($.isFunction(containerCssClass)) {
|
6085
|
-
containerCssClass = containerCssClass(this.$element);
|
6086
|
-
}
|
6087
|
-
|
6088
|
-
var containerCssAdapter = this.options.get('adaptContainerCssClass');
|
6089
|
-
containerCssAdapter = containerCssAdapter || _containerAdapter;
|
6090
|
-
|
6091
|
-
if (containerCssClass.indexOf(':all:') !== -1) {
|
6092
|
-
containerCssClass = containerCssClass.replace(':all:', '');
|
6093
|
-
|
6094
|
-
var _cssAdapter = containerCssAdapter;
|
6095
|
-
|
6096
|
-
containerCssAdapter = function (clazz) {
|
6097
|
-
var adapted = _cssAdapter(clazz);
|
6098
|
-
|
6099
|
-
if (adapted != null) {
|
6100
|
-
// Append the old one along with the adapted one
|
6101
|
-
return adapted + ' ' + clazz;
|
6102
|
-
}
|
6103
|
-
|
6104
|
-
return clazz;
|
6105
|
-
};
|
6106
|
-
}
|
6107
|
-
|
6108
|
-
var containerCss = this.options.get('containerCss') || {};
|
6109
|
-
|
6110
|
-
if ($.isFunction(containerCss)) {
|
6111
|
-
containerCss = containerCss(this.$element);
|
6112
|
-
}
|
6113
|
-
|
6114
|
-
CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
|
6115
|
-
|
6116
|
-
$container.css(containerCss);
|
6117
|
-
$container.addClass(containerCssClass);
|
6118
|
-
|
6119
|
-
return $container;
|
6120
|
-
};
|
6121
|
-
|
6122
|
-
return ContainerCSS;
|
6123
|
-
});
|
6124
|
-
|
6125
|
-
S2.define('select2/compat/dropdownCss',[
|
6126
|
-
'jquery',
|
6127
|
-
'./utils'
|
6128
|
-
], function ($, CompatUtils) {
|
6129
|
-
// No-op CSS adapter that discards all classes by default
|
6130
|
-
function _dropdownAdapter (clazz) {
|
6131
|
-
return null;
|
6132
|
-
}
|
6133
|
-
|
6134
|
-
function DropdownCSS () { }
|
6135
|
-
|
6136
|
-
DropdownCSS.prototype.render = function (decorated) {
|
6137
|
-
var $dropdown = decorated.call(this);
|
6138
|
-
|
6139
|
-
var dropdownCssClass = this.options.get('dropdownCssClass') || '';
|
6140
|
-
|
6141
|
-
if ($.isFunction(dropdownCssClass)) {
|
6142
|
-
dropdownCssClass = dropdownCssClass(this.$element);
|
6143
|
-
}
|
6144
|
-
|
6145
|
-
var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
|
6146
|
-
dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
|
6147
|
-
|
6148
|
-
if (dropdownCssClass.indexOf(':all:') !== -1) {
|
6149
|
-
dropdownCssClass = dropdownCssClass.replace(':all:', '');
|
6150
|
-
|
6151
|
-
var _cssAdapter = dropdownCssAdapter;
|
6152
|
-
|
6153
|
-
dropdownCssAdapter = function (clazz) {
|
6154
|
-
var adapted = _cssAdapter(clazz);
|
6155
|
-
|
6156
|
-
if (adapted != null) {
|
6157
|
-
// Append the old one along with the adapted one
|
6158
|
-
return adapted + ' ' + clazz;
|
6159
|
-
}
|
6160
|
-
|
6161
|
-
return clazz;
|
6162
|
-
};
|
6163
|
-
}
|
6164
|
-
|
6165
|
-
var dropdownCss = this.options.get('dropdownCss') || {};
|
6166
|
-
|
6167
|
-
if ($.isFunction(dropdownCss)) {
|
6168
|
-
dropdownCss = dropdownCss(this.$element);
|
6169
|
-
}
|
6170
|
-
|
6171
|
-
CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
|
6172
|
-
|
6173
|
-
$dropdown.css(dropdownCss);
|
6174
|
-
$dropdown.addClass(dropdownCssClass);
|
6175
|
-
|
6176
|
-
return $dropdown;
|
6177
|
-
};
|
6178
|
-
|
6179
|
-
return DropdownCSS;
|
6180
|
-
});
|
6181
|
-
|
6182
|
-
S2.define('select2/compat/initSelection',[
|
6183
|
-
'jquery'
|
6184
|
-
], function ($) {
|
6185
|
-
function InitSelection (decorated, $element, options) {
|
6186
|
-
if (options.get('debug') && window.console && console.warn) {
|
6187
|
-
console.warn(
|
6188
|
-
'Select2: The `initSelection` option has been deprecated in favor' +
|
6189
|
-
' of a custom data adapter that overrides the `current` method. ' +
|
6190
|
-
'This method is now called multiple times instead of a single ' +
|
6191
|
-
'time when the instance is initialized. Support will be removed ' +
|
6192
|
-
'for the `initSelection` option in future versions of Select2'
|
6193
|
-
);
|
6194
|
-
}
|
6195
|
-
|
6196
|
-
this.initSelection = options.get('initSelection');
|
6197
|
-
this._isInitialized = false;
|
6198
|
-
|
6199
|
-
decorated.call(this, $element, options);
|
6200
|
-
}
|
6201
|
-
|
6202
|
-
InitSelection.prototype.current = function (decorated, callback) {
|
6203
|
-
var self = this;
|
6204
|
-
|
6205
|
-
if (this._isInitialized) {
|
6206
|
-
decorated.call(this, callback);
|
6207
|
-
|
6208
|
-
return;
|
6209
|
-
}
|
6210
|
-
|
6211
|
-
this.initSelection.call(null, this.$element, function (data) {
|
6212
|
-
self._isInitialized = true;
|
6213
|
-
|
6214
|
-
if (!$.isArray(data)) {
|
6215
|
-
data = [data];
|
6216
|
-
}
|
6217
|
-
|
6218
|
-
callback(data);
|
6219
|
-
});
|
6220
|
-
};
|
6221
|
-
|
6222
|
-
return InitSelection;
|
6223
|
-
});
|
6224
|
-
|
6225
|
-
S2.define('select2/compat/inputData',[
|
6226
|
-
'jquery',
|
6227
|
-
'../utils'
|
6228
|
-
], function ($, Utils) {
|
6229
|
-
function InputData (decorated, $element, options) {
|
6230
|
-
this._currentData = [];
|
6231
|
-
this._valueSeparator = options.get('valueSeparator') || ',';
|
6232
|
-
|
6233
|
-
if ($element.prop('type') === 'hidden') {
|
6234
|
-
if (options.get('debug') && console && console.warn) {
|
6235
|
-
console.warn(
|
6236
|
-
'Select2: Using a hidden input with Select2 is no longer ' +
|
6237
|
-
'supported and may stop working in the future. It is recommended ' +
|
6238
|
-
'to use a `<select>` element instead.'
|
6239
|
-
);
|
6240
|
-
}
|
6241
|
-
}
|
6242
|
-
|
6243
|
-
decorated.call(this, $element, options);
|
6244
|
-
}
|
6245
|
-
|
6246
|
-
InputData.prototype.current = function (_, callback) {
|
6247
|
-
function getSelected (data, selectedIds) {
|
6248
|
-
var selected = [];
|
6249
|
-
|
6250
|
-
if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
|
6251
|
-
data.selected = true;
|
6252
|
-
selected.push(data);
|
6253
|
-
} else {
|
6254
|
-
data.selected = false;
|
6255
|
-
}
|
6256
|
-
|
6257
|
-
if (data.children) {
|
6258
|
-
selected.push.apply(selected, getSelected(data.children, selectedIds));
|
6259
|
-
}
|
6260
|
-
|
6261
|
-
return selected;
|
6262
|
-
}
|
6263
|
-
|
6264
|
-
var selected = [];
|
6265
|
-
|
6266
|
-
for (var d = 0; d < this._currentData.length; d++) {
|
6267
|
-
var data = this._currentData[d];
|
6268
|
-
|
6269
|
-
selected.push.apply(
|
6270
|
-
selected,
|
6271
|
-
getSelected(
|
6272
|
-
data,
|
6273
|
-
this.$element.val().split(
|
6274
|
-
this._valueSeparator
|
6275
|
-
)
|
6276
|
-
)
|
6277
|
-
);
|
6278
|
-
}
|
6279
|
-
|
6280
|
-
callback(selected);
|
6281
|
-
};
|
6282
|
-
|
6283
|
-
InputData.prototype.select = function (_, data) {
|
6284
|
-
if (!this.options.get('multiple')) {
|
6285
|
-
this.current(function (allData) {
|
6286
|
-
$.map(allData, function (data) {
|
6287
|
-
data.selected = false;
|
6288
|
-
});
|
6289
|
-
});
|
6290
|
-
|
6291
|
-
this.$element.val(data.id);
|
6292
|
-
this.$element.trigger('input').trigger('change');
|
6293
|
-
} else {
|
6294
|
-
var value = this.$element.val();
|
6295
|
-
value += this._valueSeparator + data.id;
|
6296
|
-
|
6297
|
-
this.$element.val(value);
|
6298
|
-
this.$element.trigger('input').trigger('change');
|
6299
|
-
}
|
6300
|
-
};
|
6301
|
-
|
6302
|
-
InputData.prototype.unselect = function (_, data) {
|
6303
|
-
var self = this;
|
6304
|
-
|
6305
|
-
data.selected = false;
|
6306
|
-
|
6307
|
-
this.current(function (allData) {
|
6308
|
-
var values = [];
|
6309
|
-
|
6310
|
-
for (var d = 0; d < allData.length; d++) {
|
6311
|
-
var item = allData[d];
|
6312
|
-
|
6313
|
-
if (data.id == item.id) {
|
6314
|
-
continue;
|
6315
|
-
}
|
6316
|
-
|
6317
|
-
values.push(item.id);
|
6318
|
-
}
|
6319
|
-
|
6320
|
-
self.$element.val(values.join(self._valueSeparator));
|
6321
|
-
self.$element.trigger('input').trigger('change');
|
6322
|
-
});
|
6323
|
-
};
|
6324
|
-
|
6325
|
-
InputData.prototype.query = function (_, params, callback) {
|
6326
|
-
var results = [];
|
6327
|
-
|
6328
|
-
for (var d = 0; d < this._currentData.length; d++) {
|
6329
|
-
var data = this._currentData[d];
|
6330
|
-
|
6331
|
-
var matches = this.matches(params, data);
|
6332
|
-
|
6333
|
-
if (matches !== null) {
|
6334
|
-
results.push(matches);
|
6335
|
-
}
|
6336
|
-
}
|
6337
|
-
|
6338
|
-
callback({
|
6339
|
-
results: results
|
6340
|
-
});
|
6341
|
-
};
|
6342
|
-
|
6343
|
-
InputData.prototype.addOptions = function (_, $options) {
|
6344
|
-
var options = $.map($options, function ($option) {
|
6345
|
-
return Utils.GetData($option[0], 'data');
|
6346
|
-
});
|
6347
|
-
|
6348
|
-
this._currentData.push.apply(this._currentData, options);
|
6349
|
-
};
|
6350
|
-
|
6351
|
-
return InputData;
|
6352
|
-
});
|
6353
|
-
|
6354
|
-
S2.define('select2/compat/matcher',[
|
6355
|
-
'jquery'
|
6356
|
-
], function ($) {
|
6357
|
-
function oldMatcher (matcher) {
|
6358
|
-
function wrappedMatcher (params, data) {
|
6359
|
-
var match = $.extend(true, {}, data);
|
6360
|
-
|
6361
|
-
if (params.term == null || $.trim(params.term) === '') {
|
6362
|
-
return match;
|
6363
|
-
}
|
6364
|
-
|
6365
|
-
if (data.children) {
|
6366
|
-
for (var c = data.children.length - 1; c >= 0; c--) {
|
6367
|
-
var child = data.children[c];
|
6368
|
-
|
6369
|
-
// Check if the child object matches
|
6370
|
-
// The old matcher returned a boolean true or false
|
6371
|
-
var doesMatch = matcher(params.term, child.text, child);
|
6372
|
-
|
6373
|
-
// If the child didn't match, pop it off
|
6374
|
-
if (!doesMatch) {
|
6375
|
-
match.children.splice(c, 1);
|
6376
|
-
}
|
6377
|
-
}
|
6378
|
-
|
6379
|
-
if (match.children.length > 0) {
|
6380
|
-
return match;
|
6381
|
-
}
|
6382
|
-
}
|
6383
|
-
|
6384
|
-
if (matcher(params.term, data.text, data)) {
|
6385
|
-
return match;
|
6386
|
-
}
|
6387
|
-
|
6388
|
-
return null;
|
6389
|
-
}
|
6390
|
-
|
6391
|
-
return wrappedMatcher;
|
6392
|
-
}
|
6393
|
-
|
6394
|
-
return oldMatcher;
|
6395
|
-
});
|
6396
|
-
|
6397
|
-
S2.define('select2/compat/query',[
|
6398
|
-
|
6399
|
-
], function () {
|
6400
|
-
function Query (decorated, $element, options) {
|
6401
|
-
if (options.get('debug') && window.console && console.warn) {
|
6402
|
-
console.warn(
|
6403
|
-
'Select2: The `query` option has been deprecated in favor of a ' +
|
6404
|
-
'custom data adapter that overrides the `query` method. Support ' +
|
6405
|
-
'will be removed for the `query` option in future versions of ' +
|
6406
|
-
'Select2.'
|
6407
|
-
);
|
6408
|
-
}
|
6409
|
-
|
6410
|
-
decorated.call(this, $element, options);
|
6411
|
-
}
|
6412
|
-
|
6413
|
-
Query.prototype.query = function (_, params, callback) {
|
6414
|
-
params.callback = callback;
|
6415
|
-
|
6416
|
-
var query = this.options.get('query');
|
6417
|
-
|
6418
|
-
query.call(null, params);
|
6419
|
-
};
|
6420
|
-
|
6421
|
-
return Query;
|
6422
|
-
});
|
6423
|
-
|
6424
6063
|
S2.define('select2/dropdown/attachContainer',[
|
6425
6064
|
|
6426
6065
|
], function () {
|
@@ -6433,8 +6072,8 @@ S2.define('select2/dropdown/attachContainer',[
|
|
6433
6072
|
var $dropdownContainer = $container.find('.dropdown-wrapper');
|
6434
6073
|
$dropdownContainer.append($dropdown);
|
6435
6074
|
|
6436
|
-
$dropdown.
|
6437
|
-
$container.
|
6075
|
+
$dropdown[0].classList.add('select2-dropdown--below');
|
6076
|
+
$container[0].classList.add('select2-container--below');
|
6438
6077
|
};
|
6439
6078
|
|
6440
6079
|
return AttachContainer;
|
@@ -6781,7 +6420,7 @@ S2.define('jquery.select2',[
|
|
6781
6420
|
});
|
6782
6421
|
|
6783
6422
|
// Check if we should be returning `this`
|
6784
|
-
if (
|
6423
|
+
if (thisMethods.indexOf(options) > -1) {
|
6785
6424
|
return this;
|
6786
6425
|
}
|
6787
6426
|
|