Explorar el Código

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 hace 10 años
padre
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;
 });
 

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 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;
 });
 

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 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;
 });

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio