rails_tokeninput 1.6.0 → 1.6.1.rc1

Sign up to get free protection for your applications and to get access to all the features.
data/.DS_Store ADDED
Binary file
data/lib/.DS_Store ADDED
Binary file
@@ -1,3 +1,3 @@
1
1
  module RailsTokeninput
2
- VERSION = "1.6.0"
2
+ VERSION = "1.6.1.rc1"
3
3
  end
data/vendor/.DS_Store ADDED
Binary file
Binary file
@@ -32,6 +32,7 @@ var DEFAULT_SETTINGS = {
32
32
  animateDropdown: true,
33
33
  theme: null,
34
34
  zindex: 999,
35
+ resultsLimit: null,
35
36
  resultsFormatter: function(item){ return "<li>" + item[this.propertyToSearch]+ "</li>" },
36
37
  tokenFormatter: function(item) { return "<li><p>" + item[this.propertyToSearch] + "</p></li>" },
37
38
 
@@ -58,6 +59,7 @@ var DEFAULT_SETTINGS = {
58
59
  var DEFAULT_CLASSES = {
59
60
  tokenList: "token-input-list",
60
61
  token: "token-input-token",
62
+ tokenReadOnly: "token-input-token-readonly",
61
63
  tokenDelete: "token-input-delete-token",
62
64
  selectedToken: "token-input-selected-token",
63
65
  highlightedToken: "token-input-highlighted-token",
@@ -66,6 +68,7 @@ var DEFAULT_CLASSES = {
66
68
  dropdownItem2: "token-input-dropdown-item2",
67
69
  selectedDropdownItem: "token-input-selected-dropdown-item",
68
70
  inputToken: "token-input-input-token",
71
+ focused: "token-input-focused",
69
72
  disabled: "token-input-disabled"
70
73
  };
71
74
 
@@ -203,10 +206,12 @@ $.TokenList = function (input, url_or_data, settings) {
203
206
  if (settings.tokenLimit === null || settings.tokenLimit !== token_count) {
204
207
  show_dropdown_hint();
205
208
  }
209
+ token_list.addClass(settings.classes.focused);
206
210
  })
207
211
  .blur(function () {
208
212
  hide_dropdown();
209
213
  $(this).val("");
214
+ token_list.removeClass(settings.classes.focused);
210
215
  })
211
216
  .bind("keyup keydown blur update", resize_input)
212
217
  .keydown(function (event) {
@@ -482,26 +487,30 @@ $.TokenList = function (input, url_or_data, settings) {
482
487
 
483
488
  // Inner function to a token to the list
484
489
  function insert_token(item) {
485
- var this_token = settings.tokenFormatter(item);
486
- this_token = $(this_token)
487
- .addClass(settings.classes.token)
488
- .insertBefore(input_token);
490
+ var $this_token = $(settings.tokenFormatter(item));
491
+ var readonly = item.readonly === true ? true : false;
492
+
493
+ if(readonly) $this_token.addClass(settings.classes.tokenReadOnly);
494
+
495
+ $this_token.addClass(settings.classes.token).insertBefore(input_token);
489
496
 
490
497
  // The 'delete token' button
491
- $("<span>" + settings.deleteText + "</span>")
492
- .addClass(settings.classes.tokenDelete)
493
- .appendTo(this_token)
494
- .click(function () {
495
- if (!settings.disabled) {
496
- delete_token($(this).parent());
497
- hidden_input.change();
498
- return false;
499
- }
500
- });
498
+ if(!readonly) {
499
+ $("<span>" + settings.deleteText + "</span>")
500
+ .addClass(settings.classes.tokenDelete)
501
+ .appendTo($this_token)
502
+ .click(function () {
503
+ if (!settings.disabled) {
504
+ delete_token($(this).parent());
505
+ hidden_input.change();
506
+ return false;
507
+ }
508
+ });
509
+ }
501
510
 
502
511
  // Store data on the token
503
512
  var token_data = item;
504
- $.data(this_token.get(0), "tokeninput", item);
513
+ $.data($this_token.get(0), "tokeninput", item);
505
514
 
506
515
  // Save this token for duplicate checking
507
516
  saved_tokens = saved_tokens.slice(0,selected_token_index).concat([token_data]).concat(saved_tokens.slice(selected_token_index));
@@ -518,7 +527,7 @@ $.TokenList = function (input, url_or_data, settings) {
518
527
  hide_dropdown();
519
528
  }
520
529
 
521
- return this_token;
530
+ return $this_token;
522
531
  }
523
532
 
524
533
  // Add a token to the token list based on user input
@@ -655,7 +664,7 @@ $.TokenList = function (input, url_or_data, settings) {
655
664
  var token_values = $.map(saved_tokens, function (el) {
656
665
  if(typeof settings.tokenValue == 'function')
657
666
  return settings.tokenValue.call(this, el);
658
-
667
+
659
668
  return el[settings.tokenValue];
660
669
  });
661
670
  hidden_input.val(token_values.join(settings.tokenDelimiter));
@@ -694,13 +703,18 @@ $.TokenList = function (input, url_or_data, settings) {
694
703
  }
695
704
  }
696
705
 
706
+ var regexp_special_chars = new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]', 'g');
707
+ function regexp_escape(term) {
708
+ return term.replace(regexp_special_chars, '\\$&');
709
+ }
710
+
697
711
  // Highlight the query part of the search term
698
712
  function highlight_term(value, term) {
699
- return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<b>$1</b>");
713
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + regexp_escape(term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<b>$1</b>");
700
714
  }
701
715
 
702
716
  function find_value_and_highlight_term(template, value, term) {
703
- return template.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + value + ")(?![^<>]*>)(?![^&;]+;)", "g"), highlight_term(value, term));
717
+ return template.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + regexp_escape(value) + ")(?![^<>]*>)(?![^&;]+;)", "g"), highlight_term(value, term));
704
718
  }
705
719
 
706
720
  // Populate the results dropdown with some results
@@ -719,6 +733,10 @@ $.TokenList = function (input, url_or_data, settings) {
719
733
  })
720
734
  .hide();
721
735
 
736
+ if (settings.resultsLimit && results.length > settings.resultsLimit) {
737
+ results = results.slice(0, settings.resultsLimit);
738
+ }
739
+
722
740
  $.each(results, function(index, value) {
723
741
  var this_li = settings.resultsFormatter(value);
724
742
 
@@ -871,7 +889,7 @@ $.TokenList = function (input, url_or_data, settings) {
871
889
  // Bring browser focus to the specified object.
872
890
  // Use of setTimeout is to get around an IE bug.
873
891
  // (See, e.g., http://stackoverflow.com/questions/2600186/focus-doesnt-work-in-ie)
874
- //
892
+ //
875
893
  // obj: a jQuery object to focus()
876
894
  function focus_with_timeout(obj) {
877
895
  setTimeout(function() { obj.focus(); }, 50);
@@ -909,4 +927,4 @@ $.TokenList.Cache = function (options) {
909
927
  return data[query];
910
928
  };
911
929
  };
912
- }(jQuery));
930
+ }(jQuery));
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_tokeninput
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
5
- prerelease:
4
+ version: 1.6.1.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Han
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-15 00:00:00.000000000Z
12
+ date: 2012-07-04 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
- requirement: &70095240341120 !ruby/object:Gem::Requirement
16
+ requirement: &70250781782560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70095240341120
24
+ version_requirements: *70250781782560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70095240340580 !ruby/object:Gem::Requirement
27
+ requirement: &70250781782060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70095240340580
35
+ version_requirements: *70250781782060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &70095240340120 !ruby/object:Gem::Requirement
38
+ requirement: &70250781781500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '3.1'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70095240340120
46
+ version_requirements: *70250781781500
47
47
  description: Gem installation of jquery tokeninput scripts and stylesheets
48
48
  email:
49
49
  - han@logicallsat.com
@@ -51,14 +51,18 @@ executables: []
51
51
  extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
+ - .DS_Store
54
55
  - .gitignore
55
56
  - Gemfile
56
57
  - README.md
57
58
  - Rakefile
59
+ - lib/.DS_Store
58
60
  - lib/rails_tokeninput.rb
59
61
  - lib/rails_tokeninput/engine.rb
60
62
  - lib/rails_tokeninput/version.rb
61
63
  - rails_tokeninput.gemspec
64
+ - vendor/.DS_Store
65
+ - vendor/assets/.DS_Store
62
66
  - vendor/assets/javascripts/jquery.tokeninput.js
63
67
  - vendor/assets/stylesheets/token-input-facebook.css
64
68
  - vendor/assets/stylesheets/token-input-mac.css
@@ -79,9 +83,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
79
83
  required_rubygems_version: !ruby/object:Gem::Requirement
80
84
  none: false
81
85
  requirements:
82
- - - ! '>='
86
+ - - ! '>'
83
87
  - !ruby/object:Gem::Version
84
- version: '0'
88
+ version: 1.3.1
85
89
  requirements: []
86
90
  rubyforge_project: rails_tokeninput
87
91
  rubygems_version: 1.8.6