diff --git a/bootstrap-tagsinput-rails.gemspec b/bootstrap-tagsinput-rails.gemspec index 56982a3..88ca5b5 100644 --- a/bootstrap-tagsinput-rails.gemspec +++ b/bootstrap-tagsinput-rails.gemspec @@ -22,4 +22,4 @@ Gem::Specification.new do |spec| spec.add_dependency "railties", ">= 3.1" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" -end \ No newline at end of file +end diff --git a/lib/bootstrap/tagsinput/rails/version.rb b/lib/bootstrap/tagsinput/rails/version.rb index 2e47e91..2c80cd7 100644 --- a/lib/bootstrap/tagsinput/rails/version.rb +++ b/lib/bootstrap/tagsinput/rails/version.rb @@ -1,7 +1,7 @@ module Bootstrap module Tagsinput module Rails - VERSION = "0.4.2.1" + VERSION = "0.8.0" end end end diff --git a/vendor/assets/javascripts/bootstrap-tagsinput-angular.js b/vendor/assets/javascripts/bootstrap-tagsinput-angular.js old mode 100755 new mode 100644 diff --git a/vendor/assets/javascripts/bootstrap-tagsinput-angular.min.js b/vendor/assets/javascripts/bootstrap-tagsinput-angular.min.js deleted file mode 100755 index b5cc404..0000000 --- a/vendor/assets/javascripts/bootstrap-tagsinput-angular.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * bootstrap-tagsinput v0.4.2 by Tim Schlechter - * - */ - -angular.module("bootstrap-tagsinput",[]).directive("bootstrapTagsinput",[function(){function a(a,b){return b?angular.isFunction(a.$parent[b])?a.$parent[b]:function(a){return a[b]}:void 0}return{restrict:"EA",scope:{model:"=ngModel"},template:"",replace:!1,link:function(b,c,d){$(function(){angular.isArray(b.model)||(b.model=[]);var e=$("select",c),f=d.typeaheadSource?d.typeaheadSource.split("."):null,g=f?f.length>1?b.$parent[f[0]][f[1]]:b.$parent[f[0]]:null;e.tagsinput(b.$parent[d.options||""]||{typeahead:{source:angular.isFunction(g)?g:null},itemValue:a(b,d.itemvalue),itemText:a(b,d.itemtext),confirmKeys:a(b,d.confirmkeys)?JSON.parse(d.confirmkeys):[13],tagClass:angular.isFunction(b.$parent[d.tagclass])?b.$parent[d.tagclass]:function(){return d.tagclass}});for(var h=0;h'); this.$input = $('').appendTo(this.$container); - this.$element.after(this.$container); + this.$element.before(this.$container); - var inputWidth = (this.inputSize < 3 ? 3 : this.inputSize) + "em"; - this.$input.get(0).style.cssText = "width: " + inputWidth + " !important;"; this.build(options); + this.isInit = false; } TagsInput.prototype = { @@ -55,7 +63,7 @@ * Adds the given item as a new tag. Pass true to dontPushVal to prevent * updating the elements val() */ - add: function(item, dontPushVal) { + add: function(item, dontPushVal, options) { var self = this; if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags) @@ -83,21 +91,23 @@ self.remove(self.itemsArray[0]); if (typeof item === "string" && this.$element[0].tagName === 'INPUT') { - var items = item.split(','); + var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter; + var items = item.split(delimiter); if (items.length > 1) { for (var i = 0; i < items.length; i++) { this.add(items[i], true); } if (!dontPushVal) - self.pushVal(); + self.pushVal(self.options.triggerChange); return; } } var itemValue = self.options.itemValue(item), itemText = self.options.itemText(item), - tagClass = self.options.tagClass(item); + tagClass = self.options.tagClass(item), + itemTitle = self.options.itemTitle(item); // Ignore items allready added var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0]; @@ -115,7 +125,7 @@ return; // raise beforeItemAdd arg - var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false }); + var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options}); self.$element.trigger(beforeItemAddEvent); if (beforeItemAddEvent.cancel) return; @@ -124,13 +134,20 @@ self.itemsArray.push(item); // add a tag element - var $tag = $('' + htmlEncode(itemText) + ''); + + var $tag = $('' + htmlEncode(itemText) + ''); $tag.data('item', item); self.findInputWrapper().before($tag); $tag.after(' '); + // Check to see if the tag exists in its raw or uri-encoded form + var optionExists = ( + $('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length || + $('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length + ); + // add