|
@@ -12821,8 +12821,9 @@ define('select2/defaults',[
|
|
});
|
|
});
|
|
|
|
|
|
define('select2/options',[
|
|
define('select2/options',[
|
|
|
|
+ 'jquery',
|
|
'./defaults'
|
|
'./defaults'
|
|
-], function (Defaults) {
|
|
|
|
|
|
+], function ($, Defaults) {
|
|
function Options (options, $element) {
|
|
function Options (options, $element) {
|
|
this.options = options;
|
|
this.options = options;
|
|
|
|
|
|
@@ -12834,8 +12835,65 @@ define('select2/options',[
|
|
}
|
|
}
|
|
|
|
|
|
Options.prototype.fromElement = function ($e) {
|
|
Options.prototype.fromElement = function ($e) {
|
|
- if (this.options.multiple == null) {
|
|
|
|
- this.options.multiple = $e.prop('multiple');
|
|
|
|
|
|
+ var fromProperties = ['multiple'];
|
|
|
|
+ var excludedData = ['select2'];
|
|
|
|
+
|
|
|
|
+ for (var p = 0; p < fromProperties.length; p++) {
|
|
|
|
+ var prop = fromProperties[p];
|
|
|
|
+
|
|
|
|
+ if (this.options[prop] == null) {
|
|
|
|
+ this.options[prop] = $e.prop(prop);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var data = $e.data();
|
|
|
|
+
|
|
|
|
+ function convertData (data) {
|
|
|
|
+ for (var originalKey in data) {
|
|
|
|
+ var keys = originalKey.split('-');
|
|
|
|
+
|
|
|
|
+ var dataLevel = data;
|
|
|
|
+
|
|
|
|
+ if (keys.length === 1) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (var k = 0; k < keys.length; k++) {
|
|
|
|
+ var key = keys[k];
|
|
|
|
+
|
|
|
|
+ // Lowercase the first letter
|
|
|
|
+ // By default, dash-separated becomes camelCase
|
|
|
|
+ key = key.substring(0, 1).toLowerCase() + key.substring(1);
|
|
|
|
+
|
|
|
|
+ if (!(key in dataLevel)) {
|
|
|
|
+ dataLevel[key] = {};
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (k == keys.length - 1) {
|
|
|
|
+ dataLevel[key] = data[originalKey];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataLevel = dataLevel[key];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ delete data[originalKey];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ data = convertData(data);
|
|
|
|
+
|
|
|
|
+ for (var key in data) {
|
|
|
|
+ if (excludedData.indexOf(key) > -1) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ($.isPlainObject(this.options[key])) {
|
|
|
|
+ $.extend(this.options[key], data[key]);
|
|
|
|
+ } else {
|
|
|
|
+ this.options[key] = data[key];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return this;
|
|
return this;
|