Browse Source

Expose the defaults

This exposes the default options for Select2 as
`$.fn.select2.defaults`. A default option can be set using the
`set(key, val)` option which is available. The key should use the
same formatting as the HTML data attributes.

This also adds some documentation about it.
Kevin Brown 10 năm trước cách đây
mục cha
commit
f427451853

+ 1 - 0
dist/js/i18n/it.js

@@ -0,0 +1 @@
+window.$=window.$||{},function(){$&&$.fn&&$.fn.select2&&$.fn.select2.amd&&(define=$.fn.select2.amd.define,require=$.fn.select2.amd.require),define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),require("jquery.select2"),$.fn.select2.amd={define:define,require:require}}();

+ 56 - 39
dist/js/select2.amd.full.js

@@ -159,6 +159,40 @@ window.$ = window.$ || {};(function() { if ($ && $.fn && $.fn.select2 && $.fn.se
     };
   };
 
+  Utils._convertData = function (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;
+  };
+
   return Utils;
 });
 
@@ -3740,6 +3774,17 @@ define('select2/defaults',[
     };
   };
 
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(this.defaults, convertedData);
+  };
+
   var defaults = new Defaults();
 
   return defaults;
@@ -3747,8 +3792,9 @@ define('select2/defaults',[
 
 define('select2/options',[
   'jquery',
-  './defaults'
-], function ($, Defaults) {
+  './defaults',
+  './utils'
+], function ($, Defaults, Utils) {
   function Options (options, $element) {
     this.options = options;
 
@@ -3818,41 +3864,7 @@ define('select2/options',[
 
     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);
+    data = Utils._convertData(data);
 
     for (var key in data) {
       if (excludedData.indexOf(key) > -1) {
@@ -4720,8 +4732,9 @@ define('select2/dropdown/attachContainer',[
 
 define('jquery.select2',[
   'jquery',
-  './select2/core'
-], function ($, Select2) {
+  './select2/core',
+  './select2/defaults'
+], function ($, Select2, Defaults) {
   // Force jQuery.mousewheel to be loaded if it hasn't already
   try {
     require('jquery.mousewheel');
@@ -4750,6 +4763,10 @@ define('jquery.select2',[
     };
   }
 
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
   return Select2;
 });
 

+ 56 - 39
dist/js/select2.amd.js

@@ -159,6 +159,40 @@ window.$ = window.$ || {};(function() { if ($ && $.fn && $.fn.select2 && $.fn.se
     };
   };
 
+  Utils._convertData = function (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;
+  };
+
   return Utils;
 });
 
@@ -3740,6 +3774,17 @@ define('select2/defaults',[
     };
   };
 
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(this.defaults, convertedData);
+  };
+
   var defaults = new Defaults();
 
   return defaults;
@@ -3747,8 +3792,9 @@ define('select2/defaults',[
 
 define('select2/options',[
   'jquery',
-  './defaults'
-], function ($, Defaults) {
+  './defaults',
+  './utils'
+], function ($, Defaults, Utils) {
   function Options (options, $element) {
     this.options = options;
 
@@ -3818,41 +3864,7 @@ define('select2/options',[
 
     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);
+    data = Utils._convertData(data);
 
     for (var key in data) {
       if (excludedData.indexOf(key) > -1) {
@@ -4366,8 +4378,9 @@ define('select2/core',[
 
 define('jquery.select2',[
   'jquery',
-  './select2/core'
-], function ($, Select2) {
+  './select2/core',
+  './select2/defaults'
+], function ($, Select2, Defaults) {
   // Force jQuery.mousewheel to be loaded if it hasn't already
   try {
     require('jquery.mousewheel');
@@ -4396,6 +4409,10 @@ define('jquery.select2',[
     };
   }
 
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
   return Select2;
 });
 

+ 56 - 39
dist/js/select2.full.js

@@ -9694,6 +9694,40 @@ define('select2/utils',[], function () {
     };
   };
 
+  Utils._convertData = function (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;
+  };
+
   return Utils;
 });
 
@@ -13275,6 +13309,17 @@ define('select2/defaults',[
     };
   };
 
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(this.defaults, convertedData);
+  };
+
   var defaults = new Defaults();
 
   return defaults;
@@ -13282,8 +13327,9 @@ define('select2/defaults',[
 
 define('select2/options',[
   'jquery',
-  './defaults'
-], function ($, Defaults) {
+  './defaults',
+  './utils'
+], function ($, Defaults, Utils) {
   function Options (options, $element) {
     this.options = options;
 
@@ -13353,41 +13399,7 @@ define('select2/options',[
 
     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);
+    data = Utils._convertData(data);
 
     for (var key in data) {
       if (excludedData.indexOf(key) > -1) {
@@ -14255,8 +14267,9 @@ define('select2/dropdown/attachContainer',[
 
 define('jquery.select2',[
   'jquery',
-  './select2/core'
-], function ($, Select2) {
+  './select2/core',
+  './select2/defaults'
+], function ($, Select2, Defaults) {
   // Force jQuery.mousewheel to be loaded if it hasn't already
   try {
     require('jquery.mousewheel');
@@ -14285,6 +14298,10 @@ define('jquery.select2',[
     };
   }
 
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
   return Select2;
 });
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/js/select2.full.min.js


+ 56 - 39
dist/js/select2.js

@@ -587,6 +587,40 @@ define('select2/utils',[], function () {
     };
   };
 
+  Utils._convertData = function (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;
+  };
+
   return Utils;
 });
 
@@ -4168,6 +4202,17 @@ define('select2/defaults',[
     };
   };
 
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(this.defaults, convertedData);
+  };
+
   var defaults = new Defaults();
 
   return defaults;
@@ -4175,8 +4220,9 @@ define('select2/defaults',[
 
 define('select2/options',[
   'jquery',
-  './defaults'
-], function ($, Defaults) {
+  './defaults',
+  './utils'
+], function ($, Defaults, Utils) {
   function Options (options, $element) {
     this.options = options;
 
@@ -4246,41 +4292,7 @@ define('select2/options',[
 
     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);
+    data = Utils._convertData(data);
 
     for (var key in data) {
       if (excludedData.indexOf(key) > -1) {
@@ -4794,8 +4806,9 @@ define('select2/core',[
 
 define('jquery.select2',[
   'jquery',
-  './select2/core'
-], function ($, Select2) {
+  './select2/core',
+  './select2/defaults'
+], function ($, Select2, Defaults) {
   // Force jQuery.mousewheel to be loaded if it hasn't already
   try {
     require('jquery.mousewheel');
@@ -4824,6 +4837,10 @@ define('jquery.select2',[
     };
   }
 
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
   return Select2;
 });
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/js/select2.min.js


+ 41 - 1
docs/options.html

@@ -102,7 +102,7 @@ $("select").select2({
       HTML5 data attributes.
     </p>
 
-    <h2>
+    <h2 id="amd">
       AMD compatibility
     </h2>
 
@@ -997,6 +997,46 @@ DataAdapter.query = function (params, callback) {
     </dl>
   </section>
 
+  <section id="defaults">
+    <div class="page-header">
+      <h1>Setting default options</h1>
+    </div>
+
+    <p>
+      In some cases, you need to set the default options for all instances of
+      Select2 in your web application. This is especially useful when you are
+      migrating from past versions of Select2, or you are using non-standard
+      options <a href="#amd">like custom AMD builds</a>. Select2 exposes the
+      default options through <code>$.fn.select2.defaults</code>, which allows
+      you to set them globally.
+    </p>
+
+    <p>
+      When setting options globally, any past defaults that have been set will
+      be overriden. Default options are only used when an option is requested
+      that has not been set during initialization.
+    </p>
+
+    <p>
+      <strong>You can set default options</strong> by calling
+      <code>$.fn.select2.defaults.set("key", "value")</code>. The key that is
+      set should take the same format as keys set using
+      <a href="#data-attributes">HTML <code>data-*</code> attributes</a> which
+      means that two dashes (<code>--</code>) will be replaced by a level of
+      nesting, and a single dash (<code>-</code>) will convert it to a camelCase
+      string.
+    </p>
+
+<pre class="prettyprint linenums">
+$.fn.select2.default2.set("theme", "classic");
+</pre>
+
+    <p>
+      <strong>You can reset the default options</strong> by calling
+      <code>$.fn.select2.defaults.reset()</code>.
+    </p>
+  </section>
+
   <section id="compatibility">
     <div class="page-header">
       <h1>Backwards compatibility</h1>

+ 7 - 2
src/js/jquery.select2.js

@@ -1,7 +1,8 @@
 define([
   'jquery',
-  './select2/core'
-], function ($, Select2) {
+  './select2/core',
+  './select2/defaults'
+], function ($, Select2, Defaults) {
   // Force jQuery.mousewheel to be loaded if it hasn't already
   try {
     require('jquery.mousewheel');
@@ -30,5 +31,9 @@ define([
     };
   }
 
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
   return Select2;
 });

+ 11 - 0
src/js/select2/defaults.js

@@ -307,6 +307,17 @@ define([
     };
   };
 
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(this.defaults, convertedData);
+  };
+
   var defaults = new Defaults();
 
   return defaults;

+ 4 - 37
src/js/select2/options.js

@@ -1,7 +1,8 @@
 define([
   'jquery',
-  './defaults'
-], function ($, Defaults) {
+  './defaults',
+  './utils'
+], function ($, Defaults, Utils) {
   function Options (options, $element) {
     this.options = options;
 
@@ -71,41 +72,7 @@ define([
 
     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);
+    data = Utils._convertData(data);
 
     for (var key in data) {
       if (excludedData.indexOf(key) > -1) {

+ 34 - 0
src/js/select2/utils.js

@@ -159,5 +159,39 @@ define([], function () {
     };
   };
 
+  Utils._convertData = function (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;
+  };
+
   return Utils;
 });

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác