rails_tokeninput 1.6.0 → 1.6.1.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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