autocomplete_select 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -0,0 +1,3 @@
1
+ # v0.1.0 / 2016-07-26
2
+
3
+ Created project
@@ -0,0 +1,74 @@
1
+ # autocomplete_select
2
+
3
+ [![Build Status](https://api.travis-ci.org/emn178/autocomplete_select.png)](https://travis-ci.org/emn178/autocomplete_select)
4
+ [![Coverage Status](https://coveralls.io/repos/emn178/autocomplete_select/badge.svg?branch=master)](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)
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -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
+ */
@@ -0,0 +1,5 @@
1
+ module AutocompleteSelect
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :exception
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ module AutocompleteSelect
2
+ class AutocompletesController < AutocompleteSelect::ApplicationController
3
+ def show
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,4 @@
1
+ module AutocompleteSelect
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ AutocompleteSelect::Engine.routes.draw do
2
+ resources :autocompletes, :path => '/', :only => [:show]
3
+ end
@@ -0,0 +1 @@
1
+ Spring.application_root = './spec/dummy'
@@ -0,0 +1,6 @@
1
+ require "autocomplete_select/builder"
2
+ require "autocomplete_select/helper"
3
+ require "autocomplete_select/engine"
4
+
5
+ module AutocompleteSelect
6
+ end
@@ -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,10 @@
1
+ module AutocompleteSelect
2
+ class Engine < ::Rails::Engine
3
+ # isolate_namespace AutocompleteSelect
4
+ initializer "autocomplete_select" do
5
+ ActiveSupport.on_load(:action_view) do
6
+ include AutocompleteSelect::Helper
7
+ end
8
+ end
9
+ end
10
+ 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
@@ -0,0 +1,3 @@
1
+ module AutocompleteSelect
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :autocomplete_select do
3
+ # # Task goes here
4
+ # 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: []