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 +0 -0
- data/lib/.DS_Store +0 -0
- data/lib/rails_tokeninput/version.rb +1 -1
- data/vendor/.DS_Store +0 -0
- data/vendor/assets/.DS_Store +0 -0
- data/vendor/assets/javascripts/jquery.tokeninput.js +39 -21
- metadata +15 -11
data/.DS_Store
ADDED
Binary file
|
data/lib/.DS_Store
ADDED
Binary file
|
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
|
-
|
487
|
-
|
488
|
-
|
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
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
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.
|
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-
|
12
|
+
date: 2012-07-04 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
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: *
|
24
|
+
version_requirements: *70250781782560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
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: *
|
35
|
+
version_requirements: *70250781782060
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rails
|
38
|
-
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: *
|
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:
|
88
|
+
version: 1.3.1
|
85
89
|
requirements: []
|
86
90
|
rubyforge_project: rails_tokeninput
|
87
91
|
rubygems_version: 1.8.6
|