Browse Source

Add support for initializing tags

This adds backwards compatibility for the old tags.
Kevin Brown 10 years ago
parent
commit
10536370de

+ 18 - 0
dist/js/select2.amd.full.js

@@ -1168,6 +1168,13 @@ define('select2/data/select',[
   };
 
   SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item.text == null) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
     var defaults = {
       selected: false,
       disabled: false
@@ -1334,6 +1341,17 @@ define('select2/data/tags',[
     var tags = options.get('tags');
 
     decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
   }
 
   Tags.prototype.query = function (decorated, params, callback) {

+ 18 - 0
dist/js/select2.amd.js

@@ -1168,6 +1168,13 @@ define('select2/data/select',[
   };
 
   SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item.text == null) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
     var defaults = {
       selected: false,
       disabled: false
@@ -1334,6 +1341,17 @@ define('select2/data/tags',[
     var tags = options.get('tags');
 
     decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
   }
 
   Tags.prototype.query = function (decorated, params, callback) {

+ 18 - 0
dist/js/select2.full.js

@@ -10703,6 +10703,13 @@ define('select2/data/select',[
   };
 
   SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item.text == null) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
     var defaults = {
       selected: false,
       disabled: false
@@ -10869,6 +10876,17 @@ define('select2/data/tags',[
     var tags = options.get('tags');
 
     decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
   }
 
   Tags.prototype.query = function (decorated, params, callback) {

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.full.min.js


+ 18 - 0
dist/js/select2.js

@@ -1596,6 +1596,13 @@ define('select2/data/select',[
   };
 
   SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item.text == null) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
     var defaults = {
       selected: false,
       disabled: false
@@ -1762,6 +1769,17 @@ define('select2/data/tags',[
     var tags = options.get('tags');
 
     decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
   }
 
   Tags.prototype.query = function (decorated, params, callback) {

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.min.js


+ 1 - 1
docs/examples.html

@@ -554,7 +554,7 @@ $.fn.select2.amd.require(
   $(".js-example-programmatic").select2();
 
   $tags.select2({
-    tags: true
+    tags: ['red', 'blue', 'green']
   });
 
   function matchStart (term, text) {

+ 7 - 0
src/js/select2/data/select.js

@@ -189,6 +189,13 @@ define([
   };
 
   SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item.text == null) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
     var defaults = {
       selected: false,
       disabled: false

+ 11 - 0
src/js/select2/data/tags.js

@@ -5,6 +5,17 @@ define([
     var tags = options.get('tags');
 
     decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
   }
 
   Tags.prototype.query = function (decorated, params, callback) {

Some files were not shown because too many files changed in this diff