activeadmin_addons 0.9.3 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e618fad10f9ce658b5c974e0bb3cb659dfecd54d
4
- data.tar.gz: abb269e47a0e601ef65763a28ec518f016afca3c
3
+ metadata.gz: fb0bc25f0bbd9f292d7bb1f157239838880e6301
4
+ data.tar.gz: ce91eb8f8aafd7a4f032eab9b9070593161cec47
5
5
  SHA512:
6
- metadata.gz: 14daa20ce5ae1119b4827d42433a1c7d387ef61ed8e487b69bb9cf9a8fd2cc0d5ff8d49bfe302a7bdb093a0bb35a13945de34458b2c8439e06900086b5abf0b8
7
- data.tar.gz: 4b09272bae8e79d483e7440e91fcec00f7c966bba06543a34f056569b4203a0f6811acb601cb150aca25d7d526376ae6443d1f9090917ba6ec2909f4784cbef7
6
+ metadata.gz: c6d569f553ac461d98943bfb89d300202c481e5aa69e3fbd377cfc1a64ad420586eaa910276563c7d47c8f2e517ffa788bd60e78a5399ecb0a1431d02bfe0aa1
7
+ data.tar.gz: 77bd61606672f16b76770538e0ba702d20467b3013fa28a791e92dd01876cde41c1826509ea996bad8ebab9452ff6b97199bf35ec4a461c52a9d1672ffcf7589
@@ -10,12 +10,14 @@ $(function() {
10
10
 
11
11
  function setupSelect2(container) {
12
12
  var INVALID_PARENT_ID = -1;
13
+ var DEFAULT_SELECT_WIDTH = '80%';
13
14
 
14
15
  $('.select2-tags', container).each(function(i, el) {
15
16
  var model = $(el).data('model'),
16
17
  method = $(el).data('method'),
18
+ width = $(el).data('width'),
17
19
  selectOptions = {
18
- width: '80%',
20
+ width: width || DEFAULT_SELECT_WIDTH,
19
21
  tags: $(el).data('collection')
20
22
  };
21
23
 
@@ -29,14 +31,14 @@ $(function() {
29
31
  $(el).select2(selectOptions);
30
32
 
31
33
  function onItemRemoved(event) {
32
- var itemId = '#' + prefix + '_' + event.val;
34
+ var itemId = '[id=\'' + prefix + '_' + event.val + '\']';
33
35
  $(itemId).remove();
34
36
  }
35
37
 
36
38
  function onItemAdded(event) {
37
- var selectedItemsContainer = $('#' + prefix + '_selected_values'),
38
- itemName = model + '[' + method + '][]',
39
- itemId = prefix + '_' + event.val;
39
+ var selectedItemsContainer = $("[id='" + prefix + "_selected_values']"),
40
+ itemName = model + '[' + method + '][]',
41
+ itemId = prefix + '_' + event.val;
40
42
 
41
43
  $('<input>').attr({
42
44
  id: itemId,
@@ -48,13 +50,22 @@ $(function() {
48
50
  });
49
51
 
50
52
  $('select:not(.default-select)', container).each(function(i, el) {
53
+ var firstOption = $('option', el).first(),
54
+ allowClear = false;
55
+
56
+ if (firstOption.val() === "" && firstOption.text() === "") {
57
+ allowClear = true;
58
+ }
59
+
51
60
  if ($(el).closest('.filter_form').length > 0) {
52
61
  $(el).select2({
53
- width: 'resolve'
62
+ width: 'resolve',
63
+ allowClear: allowClear
54
64
  });
55
65
  } else {
56
66
  $(el).select2({
57
- width: '80%'
67
+ width: DEFAULT_SELECT_WIDTH,
68
+ allowClear: allowClear
58
69
  });
59
70
  }
60
71
  });
@@ -64,6 +75,7 @@ $(function() {
64
75
  var fields = $(el).data('fields');
65
76
  var displayName = $(el).data('display_name');
66
77
  var parent = $(el).data('parent');
78
+ var width = $(el).data('width') || DEFAULT_SELECT_WIDTH;
67
79
  var model = $(el).data('model');
68
80
  var responseRoot = $(el).data('response_root');
69
81
  var collection = $(el).data('collection');
@@ -131,7 +143,7 @@ $(function() {
131
143
  };
132
144
 
133
145
  var select2Config = {
134
- width: '80%',
146
+ width: width,
135
147
  containerCssClass: 'nested-select-container',
136
148
  minimumInputLength: minimumInputLength,
137
149
  initSelection: function(element, callback) {
@@ -0,0 +1,37 @@
1
+ class AjaxFilterInput < Formtastic::Inputs::StringInput
2
+ include ActiveAdmin::Inputs::Filters::Base
3
+
4
+ def to_html
5
+ input_wrapping do
6
+ [
7
+ label_html,
8
+ builder.text_field(eq_input_name, input_html_options)
9
+ ].join("\n").html_safe
10
+ end
11
+ end
12
+
13
+ def eq_input_name
14
+ "#{method}_eq"
15
+ end
16
+
17
+ # rubocop:disable Metrics/CyclomaticComplexity
18
+ def input_html_options
19
+ opts = {}
20
+ opts[:class] = ['select2-ajax'].concat([@options[:class]] || []).join(' ')
21
+ opts["data-fields"] = (@options[:fields] || []).to_json
22
+ opts["data-url"] = @options[:url] || ""
23
+ opts["data-response_root"] = @options[:response_root] || @options[:url].to_s.split('/').last
24
+ opts["data-display_name"] = @options[:display_name] || "name"
25
+ opts["data-minimum_input_length"] = @options[:minimum_input_length] || 1
26
+ opts["data-width"] = @options[:width] || "100%"
27
+ opts["data-selected"] = get_selected_value(opts["data-display_name"])
28
+ super.merge opts
29
+ end
30
+
31
+ # rubocop:disable Style/RescueModifier
32
+ def get_selected_value(display_name)
33
+ filter_class = method.to_s.chomp("_id").classify.constantize
34
+ selected_value = @object.conditions.first.values.first.value rescue nil
35
+ filter_class.find(selected_value).send(display_name) if !!selected_value
36
+ end
37
+ end
@@ -8,6 +8,7 @@ class SearchSelectInput < Formtastic::Inputs::StringInput
8
8
  opts["data-response_root"] = @options[:response_root] || @options[:url].to_s.split('/').last
9
9
  opts["data-display_name"] = @options[:display_name] || "name"
10
10
  opts["data-minimum_input_length"] = @options[:minimum_input_length] || 1
11
+ opts["data-width"] = @options[:width] if @options[:width]
11
12
  opts["data-selected"] = relation.try(opts["data-display_name"].to_sym)
12
13
  super.merge opts
13
14
  end
@@ -2,6 +2,7 @@ class TagsInput < Formtastic::Inputs::StringInput
2
2
  def input_html_options
3
3
  opts = {}
4
4
  opts[:class] = "select2-tags"
5
+ opts["data-width"] = @options[:width] if @options[:width]
5
6
  super.merge(opts)
6
7
  end
7
8
 
@@ -21,24 +21,38 @@ module ActiveAdminAddons
21
21
  end
22
22
 
23
23
  def build_label
24
- icon = icon_for_filename(data.original_filename)
24
+ icon = icon_for_filename(file.original_filename)
25
25
  style = { width: "20", height: "20", style: "margin-right: 5px; vertical-align: middle;" }
26
26
  icon_img = context.image_tag(icon, style)
27
- file_name = data.original_filename
28
- file_name = context.truncate(data.original_filename) if options[:truncate] == true
29
- label_text = options.fetch(:label, file_name)
27
+ text = label_text
30
28
 
31
29
  context.content_tag(:span) do
32
30
  context.concat(icon_img)
33
- context.safe_concat(label_text)
31
+ context.safe_concat(text)
34
32
  end
35
33
  end
36
34
 
35
+ def label_text
36
+ label =
37
+ if options[:label].nil?
38
+ file.original_filename
39
+ elsif options[:label].is_a? Proc
40
+ options[:label].call(model).to_s
41
+ else
42
+ options[:label].to_s
43
+ end
44
+ options[:truncate] ? context.truncate(label) : label
45
+ end
46
+
37
47
  def render
38
- raise 'you need to pass a paperclip attribute' unless data.respond_to?(:url)
48
+ raise 'you need to pass a paperclip attribute' unless file.respond_to?(:url)
39
49
  options[:truncate] = options.fetch(:truncate, true)
40
- return nil unless data.exists?
41
- context.link_to(build_label, data.url, target: "_blank", class: "attachment-link")
50
+ return nil unless file.exists?
51
+ context.link_to(build_label, file.url, target: "_blank", class: "attachment-link")
52
+ end
53
+
54
+ def file
55
+ model.send(attribute)
42
56
  end
43
57
  end
44
58
 
@@ -1,3 +1,3 @@
1
1
  module ActiveadminAddons
2
- VERSION = "0.9.3"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin_addons
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Platanus
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-06-27 00:00:00.000000000 Z
14
+ date: 2016-11-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: railties
@@ -375,6 +375,7 @@ files:
375
375
  - app/assets/javascripts/palette-color-picker.js
376
376
  - app/assets/stylesheets/activeadmin_addons/all.scss
377
377
  - app/assets/stylesheets/palette-color-picker.scss
378
+ - app/inputs/ajax_filter_input.rb
378
379
  - app/inputs/color_picker_input.rb
379
380
  - app/inputs/date_time_picker_input.rb
380
381
  - app/inputs/nested_select_input.rb