activeadmin-searchable_select 1.6.0 → 1.8.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 +4 -4
- data/.github/workflows/tests.yml +2 -0
- data/Appraisals +6 -1
- data/CHANGELOG.md +8 -6
- data/README.md +37 -1
- data/activeadmin-searchable_select.gemspec +3 -3
- data/app/assets/javascripts/active_admin/searchable_select_pack.js +2 -0
- data/gemfiles/rails_6.x_active_admin_3.x.gemfile +9 -0
- data/lib/activeadmin/searchable_select/select_input_extension.rb +1 -1
- data/lib/activeadmin/searchable_select/version.rb +1 -1
- data/package.json +38 -0
- data/spec/features/end_to_end_spec.rb +20 -0
- data/spec/support/models.rb +16 -0
- data/src/searchable_select/init.js +46 -0
- data/src/searchable_select.js +2 -0
- data/src/searchable_select.scss +5 -0
- metadata +17 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cfe9f36cf136d370ead8ce6227d00057850a5d4f6ee9520cbed52da1c15a3d8
|
4
|
+
data.tar.gz: d5043ace26e5abc0b5a4ee3c58b2fad8243b9cb8c78de93be0013f6c4116b163
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 912517731c734da5286389411fc658c3de99d336b538b8f9c8e6b28640185bcd3b718d7220c3b91d4a1d70f398b0e43bfe606c61403cd66807d441f89eda668d
|
7
|
+
data.tar.gz: 4491ef833bf6b70a2b66008de0507b22ca05dd0d9ff620b76127ec284fd4961c8eb868856ff2f472001d85b904a1e0114509d996c013ff66a81a2f27c8592ee5
|
data/.github/workflows/tests.yml
CHANGED
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version 1.
|
3
|
+
### Version 1.8.0
|
4
4
|
|
5
|
-
|
5
|
+
2023-08-17
|
6
6
|
|
7
|
-
[Compare changes](https://github.com/codevise/activeadmin-searchable_select/compare/1-
|
7
|
+
[Compare changes](https://github.com/codevise/activeadmin-searchable_select/compare/1-7-stable...v1.8.0)
|
8
8
|
|
9
|
-
-
|
10
|
-
([#
|
9
|
+
- Update webdrivers to fix specs for Chrome 115
|
10
|
+
([#47](https://github.com/codevise/activeadmin-searchable_select/pull/47))
|
11
|
+
- Add support for Active Admin 3.0
|
12
|
+
([#45](https://github.com/codevise/activeadmin-searchable_select/pull/45))
|
11
13
|
|
12
14
|
See
|
13
|
-
[1-
|
15
|
+
[1-7-stable branch](https://github.com/codevise/activeadmin-searchable_select/blob/1-7-stable/CHANGELOG.md)
|
14
16
|
for previous changes.
|
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# ActiveAdmin Searchable Select
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/activeadmin-searchable_select)
|
4
|
-
[](https://badge.fury.io/js/@codevise%2Factiveadmin-searchable_select)
|
5
|
+
[](https://www.npmjs.com/package/@codevise/activeadmin-searchable_select)
|
6
|
+
[](https://github.com/codevise/activeadmin-searchable_select/actions)
|
5
7
|
|
6
8
|
Searchable select boxes (via [Select2](https://select2.org/)) for
|
7
9
|
ActiveAdmin forms and filters. Extends the ActiveAdmin resource DSL to
|
@@ -15,6 +17,7 @@ Add `activeadmin-searchable_select` to your Gemfile:
|
|
15
17
|
gem 'activeadmin-searchable_select'
|
16
18
|
```
|
17
19
|
|
20
|
+
##### Using assets via Sprockets
|
18
21
|
Import stylesheets and require javascripts:
|
19
22
|
|
20
23
|
```scss
|
@@ -27,6 +30,39 @@ Import stylesheets and require javascripts:
|
|
27
30
|
//= require active_admin/searchable_select
|
28
31
|
```
|
29
32
|
|
33
|
+
##### Using assets via Webpacker (or any other assets bundler) as a NPM module (Yarn package)
|
34
|
+
|
35
|
+
Execute:
|
36
|
+
|
37
|
+
$ npm i @codevise/activeadmin-searchable_select
|
38
|
+
|
39
|
+
Or
|
40
|
+
|
41
|
+
$ yarn add @codevise/activeadmin-searchable_select
|
42
|
+
|
43
|
+
Or add manually to `package.json`:
|
44
|
+
|
45
|
+
```json
|
46
|
+
"dependencies": {
|
47
|
+
"@codevise/activeadmin-searchable_select": "1.6.0"
|
48
|
+
}
|
49
|
+
```
|
50
|
+
and execute:
|
51
|
+
|
52
|
+
$ yarn
|
53
|
+
|
54
|
+
Add the following line into `app/javascript/active_admin.js`:
|
55
|
+
|
56
|
+
```javascript
|
57
|
+
import '@codevise/activeadmin-searchable_select';
|
58
|
+
```
|
59
|
+
|
60
|
+
Add the following line into `app/javascript/stylesheets/active_admin.scss`:
|
61
|
+
|
62
|
+
```css
|
63
|
+
@import '@codevise/activeadmin-searchable_select';
|
64
|
+
```
|
65
|
+
|
30
66
|
## Usage
|
31
67
|
|
32
68
|
### Making Select Boxes Searchable
|
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_development_dependency 'capybara', '~> 3.9'
|
28
28
|
spec.add_development_dependency 'puma', '~> 5.0'
|
29
|
-
spec.add_development_dependency 'selenium-webdriver', '~>
|
30
|
-
spec.add_development_dependency 'webdrivers', '
|
29
|
+
spec.add_development_dependency 'selenium-webdriver', '~> 4.1'
|
30
|
+
spec.add_development_dependency 'webdrivers', '= 5.3.0'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'coffee-rails'
|
33
33
|
spec.add_development_dependency 'rails'
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_development_dependency 'semmy', '~> 1.0'
|
36
36
|
spec.add_development_dependency 'sprockets', '~> 3.7'
|
37
37
|
|
38
|
-
spec.add_runtime_dependency 'activeadmin', ['>= 1.x', '<
|
38
|
+
spec.add_runtime_dependency 'activeadmin', ['>= 1.x', '< 4']
|
39
39
|
spec.add_runtime_dependency 'jquery-rails', ['>= 3.0', '< 5']
|
40
40
|
spec.add_runtime_dependency 'select2-rails', '~> 4.0'
|
41
41
|
end
|
data/package.json
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
{
|
2
|
+
"name": "@codevise/activeadmin-searchable_select",
|
3
|
+
"version": "1.7.0",
|
4
|
+
"description": "Use searchable selects based on Select2 in Active Admin forms and filters.",
|
5
|
+
"main": "src/searchable_select.js",
|
6
|
+
"style": "src/searchable_select.scss",
|
7
|
+
"repository": "git@github.com:codevise/activeadmin-searchable_select.git",
|
8
|
+
"author": "Codevise Solutions Ltd <info@codevise.de>",
|
9
|
+
"license": "MIT",
|
10
|
+
"private": false,
|
11
|
+
"repository": {
|
12
|
+
"type": "git",
|
13
|
+
"url": "git+https://github.com/codevise/activeadmin-searchable_select.git"
|
14
|
+
},
|
15
|
+
"bugs": {
|
16
|
+
"url": "https://github.com/codevise/activeadmin-searchable_select/issues"
|
17
|
+
},
|
18
|
+
"homepage": "https://github.com/codevise/activeadmin-searchable_select#readme",
|
19
|
+
"keywords": [
|
20
|
+
"select2",
|
21
|
+
"active",
|
22
|
+
"admin",
|
23
|
+
"searchable",
|
24
|
+
"select"
|
25
|
+
],
|
26
|
+
"dependencies": {
|
27
|
+
"jquery": ">= 3.0, < 5",
|
28
|
+
"select2": "~> 4.0"
|
29
|
+
},
|
30
|
+
"files": [
|
31
|
+
"src/**/*"
|
32
|
+
],
|
33
|
+
"scripts": {
|
34
|
+
"prepare_javascripts_src": "rm -rf src && cp -R app/assets/javascripts/active_admin/ src && mv src/searchable_select_pack.js src/searchable_select.js",
|
35
|
+
"prepare_stylesheets_src": "cp -R app/assets/stylesheets/active_admin/* src",
|
36
|
+
"prepublishOnly": "npm run prepare_javascripts_src && npm run prepare_stylesheets_src"
|
37
|
+
}
|
38
|
+
}
|
@@ -180,6 +180,22 @@ RSpec.describe 'end to end', type: :feature, js: true do
|
|
180
180
|
expect(select_box_items.size).to eq(15)
|
181
181
|
end
|
182
182
|
end
|
183
|
+
|
184
|
+
describe 'edit page with searchable select filter' do
|
185
|
+
it 'preselects item' do
|
186
|
+
option_type = OptionType.create(name: 'Color')
|
187
|
+
ot = OptionType.create(name: 'Size')
|
188
|
+
option_value = OptionValue.create(value: 'Black', option_type: option_type)
|
189
|
+
OptionValue.create(value: 'Orange', option_type: option_type)
|
190
|
+
OptionValue.create(value: 'M', option_type: ot)
|
191
|
+
product = Product.create(name: 'Cap', option_type: option_type)
|
192
|
+
variant = Variant.create(product: product, option_value: option_value)
|
193
|
+
|
194
|
+
visit "/admin/products/#{product.id}/variants/#{variant.id}/edit"
|
195
|
+
|
196
|
+
expect(select_box_selected_item_text).to eq('Black')
|
197
|
+
end
|
198
|
+
end
|
183
199
|
end
|
184
200
|
|
185
201
|
def expand_select_box
|
@@ -198,6 +214,10 @@ RSpec.describe 'end to end', type: :feature, js: true do
|
|
198
214
|
all('.select2-dropdown li').map(&:text)
|
199
215
|
end
|
200
216
|
|
217
|
+
def select_box_selected_item_text
|
218
|
+
find('.select2-selection').text
|
219
|
+
end
|
220
|
+
|
201
221
|
def wait_for_ajax
|
202
222
|
Timeout.timeout(Capybara.default_max_wait_time) do
|
203
223
|
sleep 0.1
|
data/spec/support/models.rb
CHANGED
@@ -4,6 +4,10 @@ class User < ActiveRecord::Base; end
|
|
4
4
|
|
5
5
|
class Category < ActiveRecord::Base
|
6
6
|
belongs_to :created_by, class_name: 'User'
|
7
|
+
|
8
|
+
def self.ransackable_attributes(_auth_object = nil)
|
9
|
+
['name']
|
10
|
+
end
|
7
11
|
end
|
8
12
|
|
9
13
|
class Post < ActiveRecord::Base
|
@@ -11,6 +15,10 @@ class Post < ActiveRecord::Base
|
|
11
15
|
belongs_to :user
|
12
16
|
|
13
17
|
scope(:published, -> { where(published: true) })
|
18
|
+
|
19
|
+
def self.ransackable_attributes(_auth_object = nil)
|
20
|
+
%w(category_id title)
|
21
|
+
end
|
14
22
|
end
|
15
23
|
|
16
24
|
module RGB
|
@@ -24,6 +32,10 @@ module Internal
|
|
24
32
|
class TagName < ActiveRecord::Base
|
25
33
|
self.table_name = :internal_tag_names
|
26
34
|
belongs_to :color, class_name: 'RGB::Color', foreign_key: :color_id
|
35
|
+
|
36
|
+
def self.ransackable_attributes(_auth_object = nil)
|
37
|
+
['color_id']
|
38
|
+
end
|
27
39
|
end
|
28
40
|
end
|
29
41
|
|
@@ -31,6 +43,10 @@ class OptionType < ActiveRecord::Base; end
|
|
31
43
|
|
32
44
|
class OptionValue < ActiveRecord::Base
|
33
45
|
belongs_to :option_type
|
46
|
+
|
47
|
+
def self.ransackable_attributes(_auth_object = nil)
|
48
|
+
['value']
|
49
|
+
end
|
34
50
|
end
|
35
51
|
|
36
52
|
class Product < ActiveRecord::Base
|
@@ -0,0 +1,46 @@
|
|
1
|
+
(function() {
|
2
|
+
function initSearchableSelects(inputs, extra) {
|
3
|
+
inputs.each(function() {
|
4
|
+
var item = $(this);
|
5
|
+
|
6
|
+
// reading from data allows <input data-searchable_select='{"tags": ['some']}'>
|
7
|
+
// to be passed to select2
|
8
|
+
var options = $.extend(extra || {}, item.data('searchableSelect'));
|
9
|
+
var url = item.data('ajaxUrl');
|
10
|
+
|
11
|
+
if (url) {
|
12
|
+
$.extend(options, {
|
13
|
+
ajax: {
|
14
|
+
url: url,
|
15
|
+
dataType: 'json',
|
16
|
+
|
17
|
+
data: function (params) {
|
18
|
+
return {
|
19
|
+
term: params.term,
|
20
|
+
page: pageParamWithBaseZero(params)
|
21
|
+
};
|
22
|
+
}
|
23
|
+
}
|
24
|
+
});
|
25
|
+
}
|
26
|
+
|
27
|
+
item.select2(options);
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
function pageParamWithBaseZero(params) {
|
32
|
+
return params.page ? params.page - 1 : undefined;
|
33
|
+
}
|
34
|
+
|
35
|
+
$(document).on('has_many_add:after', '.has_many_container', function(e, fieldset) {
|
36
|
+
initSearchableSelects(fieldset.find('.searchable-select-input'));
|
37
|
+
});
|
38
|
+
|
39
|
+
$(document).on('page:load turbolinks:load', function() {
|
40
|
+
initSearchableSelects($(".searchable-select-input"), {placeholder: ""});
|
41
|
+
});
|
42
|
+
|
43
|
+
$(function() {
|
44
|
+
initSearchableSelects($(".searchable-select-input"));
|
45
|
+
});
|
46
|
+
}());
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeadmin-searchable_select
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Codevise Solutions Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -148,28 +148,28 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
151
|
+
version: '4.1'
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
158
|
+
version: '4.1'
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: webdrivers
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
|
-
- -
|
163
|
+
- - '='
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
165
|
+
version: 5.3.0
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
|
-
- -
|
170
|
+
- - '='
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
172
|
+
version: 5.3.0
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: coffee-rails
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -249,7 +249,7 @@ dependencies:
|
|
249
249
|
version: 1.x
|
250
250
|
- - "<"
|
251
251
|
- !ruby/object:Gem::Version
|
252
|
-
version: '
|
252
|
+
version: '4'
|
253
253
|
type: :runtime
|
254
254
|
prerelease: false
|
255
255
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -259,7 +259,7 @@ dependencies:
|
|
259
259
|
version: 1.x
|
260
260
|
- - "<"
|
261
261
|
- !ruby/object:Gem::Version
|
262
|
-
version: '
|
262
|
+
version: '4'
|
263
263
|
- !ruby/object:Gem::Dependency
|
264
264
|
name: jquery-rails
|
265
265
|
requirement: !ruby/object:Gem::Requirement
|
@@ -314,12 +314,14 @@ files:
|
|
314
314
|
- activeadmin-searchable_select.gemspec
|
315
315
|
- app/assets/javascripts/active_admin/searchable_select.js
|
316
316
|
- app/assets/javascripts/active_admin/searchable_select/init.js
|
317
|
+
- app/assets/javascripts/active_admin/searchable_select_pack.js
|
317
318
|
- app/assets/stylesheets/active_admin/searchable_select.scss
|
318
319
|
- bin/rspec
|
319
320
|
- gemfiles/rails_5.1_active_admin_1.x.gemfile
|
320
321
|
- gemfiles/rails_5.x_active_admin_1.x.gemfile
|
321
322
|
- gemfiles/rails_5.x_active_admin_2.x.gemfile
|
322
323
|
- gemfiles/rails_6.x_active_admin_2.x.gemfile
|
324
|
+
- gemfiles/rails_6.x_active_admin_3.x.gemfile
|
323
325
|
- lib/activeadmin-searchable_select.rb
|
324
326
|
- lib/activeadmin/inputs/filters/searchable_select_input.rb
|
325
327
|
- lib/activeadmin/inputs/searchable_select_input.rb
|
@@ -330,6 +332,7 @@ files:
|
|
330
332
|
- lib/activeadmin/searchable_select/resource_extension.rb
|
331
333
|
- lib/activeadmin/searchable_select/select_input_extension.rb
|
332
334
|
- lib/activeadmin/searchable_select/version.rb
|
335
|
+
- package.json
|
333
336
|
- spec/features/ajax_params_spec.rb
|
334
337
|
- spec/features/end_to_end_spec.rb
|
335
338
|
- spec/features/filter_input_spec.rb
|
@@ -353,6 +356,9 @@ files:
|
|
353
356
|
- spec/support/models.rb
|
354
357
|
- spec/support/pluck_polyfill.rb
|
355
358
|
- spec/support/reset_settings.rb
|
359
|
+
- src/searchable_select.js
|
360
|
+
- src/searchable_select.scss
|
361
|
+
- src/searchable_select/init.js
|
356
362
|
homepage: https://github.com/codevise/activeadmin-searchable_select
|
357
363
|
licenses:
|
358
364
|
- MIT
|
@@ -375,7 +381,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
381
|
- !ruby/object:Gem::Version
|
376
382
|
version: '0'
|
377
383
|
requirements: []
|
378
|
-
rubygems_version: 3.
|
384
|
+
rubygems_version: 3.2.3
|
379
385
|
signing_key:
|
380
386
|
specification_version: 4
|
381
387
|
summary: Use searchable selects based on Select2 in Active Admin forms and filters.
|