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 +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
|