autocomplete_select 0.1.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3 -0
- data/README.md +74 -0
- data/Rakefile +6 -0
- data/app/assets/javascripts/autocomplete_select.js +39 -0
- data/app/assets/javascripts/autocomplete_select/application.js +13 -0
- data/app/assets/stylesheets/autocomplete_select/application.css +15 -0
- data/app/controllers/autocomplete_select/application_controller.rb +5 -0
- data/app/controllers/autocomplete_select/autocompletes_controller.rb +6 -0
- data/app/helpers/autocomplete_select/application_helper.rb +4 -0
- data/config/routes.rb +3 -0
- data/config/spring.rb +1 -0
- data/lib/autocomplete_select.rb +6 -0
- data/lib/autocomplete_select/builder.rb +11 -0
- data/lib/autocomplete_select/engine.rb +10 -0
- data/lib/autocomplete_select/helper.rb +26 -0
- data/lib/autocomplete_select/version.rb +3 -0
- data/lib/tasks/autocomplete_select_tasks.rake +4 -0
- metadata +203 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 201a7ca2ab817bf533120eb712b31dc8738decea
|
4
|
+
data.tar.gz: 61bac4c088ac1593da7fd5a4eabb138d47a00f47
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 30f09df3d493e996c91eaecdd1543ff4f04bab0f5f7c7daf1d003dc82c11d63ff0a8b1215e911684eb594e300f229280177a4c4165d7bbc07abaf21ba070b232
|
7
|
+
data.tar.gz: f29a47b3f3a16e867dff4f047f58cc81c2623b281123c6efc050e143267c5f920237fb158b6f2ca7f2fbba0fa206057c7751c1b39b929fa5011b15f1911779db
|
data/CHANGELOG.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# autocomplete_select
|
2
|
+
|
3
|
+
[](https://travis-ci.org/emn178/autocomplete_select)
|
4
|
+
[](https://coveralls.io/r/emn178/autocomplete_select?branch=master)
|
5
|
+
|
6
|
+
Integrate with jQuery UI autocomplete library to provide select by autocomplete input and form helper.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'autocomplete_select'
|
14
|
+
```
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
bundle
|
19
|
+
|
20
|
+
Or install it yourself as:
|
21
|
+
|
22
|
+
gem install autocomplete_select
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
### Require Javascript
|
27
|
+
Make sure you required **jQuery**, **jQuery UI** and add the following to /app/assets/javascripts/application.js:
|
28
|
+
```JavaScript
|
29
|
+
//= require autocomplete_select
|
30
|
+
```
|
31
|
+
### Require CSS
|
32
|
+
Make sure you required **jQuery UI** css.
|
33
|
+
|
34
|
+
### Controller
|
35
|
+
You have to implement a controller and action like this
|
36
|
+
```ruby
|
37
|
+
class UsersController < ActionController::Base
|
38
|
+
def search
|
39
|
+
term = params[:term]
|
40
|
+
users = User.where("name LIKE ?", "%#{term}%")
|
41
|
+
render :json => users.map{ |user| {:value => user.id, :label => user.name}}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
```
|
45
|
+
The input `term` is what you type in textbox.
|
46
|
+
The output must be an array with `value` and `label`.
|
47
|
+
|
48
|
+
### Helpers
|
49
|
+
You can use `autocomplete_select_tag` and `autocomplete_select`.
|
50
|
+
```ERB
|
51
|
+
<%= autocomplete_select_tag(name, search_path, value, autocomplete_options, html_options) %>
|
52
|
+
<%= autocomplete_select_tag(name, search_path, value, display, autocomplete_options, html_options) %>
|
53
|
+
<%= autocomplete_select_tag(:user_id, search_users_path, 1, 'username', {:minLength => 3}, {:class => 'user'}) %>
|
54
|
+
<%= autocomplete_select_tag(:user_id, search_users_path, 1, 'username') %>
|
55
|
+
<%= autocomplete_select_tag(:user_id, search_users_path) %>
|
56
|
+
|
57
|
+
or form builder
|
58
|
+
|
59
|
+
<% form_for @item do |f| %>
|
60
|
+
<%= f.autocomplete_select(method, search_path, autocomplete_options, html_options) %>
|
61
|
+
<%= f.autocomplete_select(method, search_path, display, autocomplete_options, html_options) %>
|
62
|
+
<%= f.autocomplete_select(:user_id, search_users_path, 'username', {:minLength => 3}, {:class => 'user'}) %>
|
63
|
+
<%= f.autocomplete_select(:user_id, search_users_path, 'username') %>
|
64
|
+
<%= f.autocomplete_select(:user_id, search_users_path) %>
|
65
|
+
<% end %>
|
66
|
+
```
|
67
|
+
|
68
|
+
## License
|
69
|
+
|
70
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
71
|
+
|
72
|
+
## Contact
|
73
|
+
The project's website is located at https://github.com/emn178/autocomplete_select
|
74
|
+
Author: Chen, Yi-Cyuan (emn178@gmail.com)
|
data/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
(function ($) {
|
2
|
+
$(document).on('ready page:load', function () {
|
3
|
+
$('[data-autocomplete-select]').each(function () {
|
4
|
+
var element = $(this), label;
|
5
|
+
var hidden = $('<input type="hidden"/>')
|
6
|
+
.attr('name', element.attr('name'))
|
7
|
+
.val(element.val())
|
8
|
+
.insertAfter(element);
|
9
|
+
|
10
|
+
var options = $.extend({
|
11
|
+
minLength: 2
|
12
|
+
}, element.data('autocomplete-select'), {
|
13
|
+
focus: function( event, ui ) {
|
14
|
+
element.val( ui.item.label );
|
15
|
+
return false;
|
16
|
+
},
|
17
|
+
select: function( event, ui ) {
|
18
|
+
element.val( label = ui.item.label );
|
19
|
+
hidden.val( ui.item.value );
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
});
|
23
|
+
|
24
|
+
element.autocomplete(options).removeAttr('name').blur(function () {
|
25
|
+
var value = element.val();
|
26
|
+
if (value) {
|
27
|
+
element.val(label);
|
28
|
+
} else {
|
29
|
+
label = '';
|
30
|
+
hidden.val('');
|
31
|
+
}
|
32
|
+
});
|
33
|
+
if (options.label) {
|
34
|
+
element.val(options.label);
|
35
|
+
}
|
36
|
+
label = element.val();
|
37
|
+
});
|
38
|
+
});
|
39
|
+
})(jQuery);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree .
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any styles
|
10
|
+
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
11
|
+
* file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
data/config/routes.rb
ADDED
data/config/spring.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Spring.application_root = './spec/dummy'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'action_view'
|
2
|
+
|
3
|
+
module ActionView
|
4
|
+
module Helpers
|
5
|
+
class FormBuilder
|
6
|
+
def autocomplete_select(method, path, label_or_options = nil, *args)
|
7
|
+
text_field(method, @template.autocomplete_select_options(path, label_or_options, args))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module AutocompleteSelect
|
2
|
+
module Helper
|
3
|
+
def autocomplete_select_options(path, label_or_options = nil, args)
|
4
|
+
if label_or_options.is_a?(Hash)
|
5
|
+
options = label_or_options
|
6
|
+
else
|
7
|
+
label = label_or_options
|
8
|
+
options = args.shift
|
9
|
+
end
|
10
|
+
html_options = args.shift || {}
|
11
|
+
|
12
|
+
options ||= {}
|
13
|
+
options[:source] = path
|
14
|
+
options[:label] = label if label
|
15
|
+
html_options.deep_merge({
|
16
|
+
:data => {
|
17
|
+
:"autocomplete-select" => options.to_json
|
18
|
+
}
|
19
|
+
})
|
20
|
+
end
|
21
|
+
|
22
|
+
def autocomplete_select_tag(name, path, value = nil, label_or_options = nil, *args)
|
23
|
+
text_field_tag(name, value, autocomplete_select_options(path, label_or_options, args))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: autocomplete_select
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chen, Yi-Cyuan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jquery-rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jquery-ui-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '10.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '10.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec-rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-its
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: simplecov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: coveralls
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Integrate with jQuery UI autocomplete library to provide select by autocomplete
|
154
|
+
input and form helper.
|
155
|
+
email:
|
156
|
+
- emn178@gmail.com
|
157
|
+
executables: []
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- CHANGELOG.md
|
162
|
+
- README.md
|
163
|
+
- Rakefile
|
164
|
+
- app/assets/javascripts/autocomplete_select.js
|
165
|
+
- app/assets/javascripts/autocomplete_select/application.js
|
166
|
+
- app/assets/stylesheets/autocomplete_select/application.css
|
167
|
+
- app/controllers/autocomplete_select/application_controller.rb
|
168
|
+
- app/controllers/autocomplete_select/autocompletes_controller.rb
|
169
|
+
- app/helpers/autocomplete_select/application_helper.rb
|
170
|
+
- config/routes.rb
|
171
|
+
- config/spring.rb
|
172
|
+
- lib/autocomplete_select.rb
|
173
|
+
- lib/autocomplete_select/builder.rb
|
174
|
+
- lib/autocomplete_select/engine.rb
|
175
|
+
- lib/autocomplete_select/helper.rb
|
176
|
+
- lib/autocomplete_select/version.rb
|
177
|
+
- lib/tasks/autocomplete_select_tasks.rake
|
178
|
+
homepage: https://github.com/emn178/autocomplete_select
|
179
|
+
licenses:
|
180
|
+
- MIT
|
181
|
+
metadata: {}
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options: []
|
184
|
+
require_paths:
|
185
|
+
- lib
|
186
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
requirements: []
|
197
|
+
rubyforge_project:
|
198
|
+
rubygems_version: 2.5.1
|
199
|
+
signing_key:
|
200
|
+
specification_version: 4
|
201
|
+
summary: Integrate with jQuery UI autocomplete library to provide select by autocomplete
|
202
|
+
input and form helper.
|
203
|
+
test_files: []
|