recordselect 4.0.0 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0ef7c94da94faaf00ae9051a1df4df8f2eaffb81b688227077980a08b3779e9
4
- data.tar.gz: f41bab439890701d105855510b961364e13cb6b6e1682273aaa8db84c73d408a
3
+ metadata.gz: 0e5ff734695b0b0234dd6ee6307440e1de3a3a72f87798026b18b0e0739e26b1
4
+ data.tar.gz: a12a0c135cc28dcc72121be2361233b347c0915c8590f31aab566d97b28467fa
5
5
  SHA512:
6
- metadata.gz: d8cd9703b6f7a2d4e7eb36299a65d002ee87b273afeda9490c673a049d0e041ac63f73bdbfbc8235556ad33e380ae6b6be5f7769e19ec7cb798c42c7d7636b3b
7
- data.tar.gz: 4f444e548ac1d7052c9e0f1e320bb92f3c207aba91ec92e76399faa3211dc156a449a9883b963c3c4745a191891c1e5b629b4fe9b02455d81e99e8bbdf99e3da
6
+ metadata.gz: 2149f1cfa9f94456836fd71d3c5a3f6d4e636c01d8fb3b0c9ea2138b785f902513ec9824c9e9f489099dde7cd544356aa55c93d710a8ba510a8490fe7135a6d2
7
+ data.tar.gz: ea348566bafb9430145039802fcdd8c7bb7053f025e0bde06520a79a1974b6d7dbb7b72c0af3005696149e8ff56a2be6cd7bee236b8ffd96e884d015b2c7eb9f
@@ -142,7 +142,7 @@
142
142
  rs.current_xhr = null;
143
143
  }
144
144
  });
145
- jQuery(document).on('click', 'input.recordselect ~ .clear-input-button', function() {
145
+ jQuery(document).on('click', 'input.recordselect ~ .clear-input-button', function(event) {
146
146
  var $clear_button = jQuery(event.target), $input = $clear_button.prevAll('input');
147
147
  if (!$input.length) return;
148
148
  $input.val('').removeClass('selected');
@@ -163,8 +163,9 @@
163
163
  RecordSelect.document_loaded = false;
164
164
 
165
165
  RecordSelect.from_attributes = function(item) {
166
+ if (item.prop('disabled')) return;
166
167
  var rs_class = RecordSelect[item.data('rs-type')];
167
- new rs_class(item.data('rs-id'), item.data('rs-url'), item.data('rs-options'));
168
+ new rs_class(item.data('rs-id') || item, item.data('rs-url'), item.data('rs-options'));
168
169
  }
169
170
 
170
171
  RecordSelect.select_item = function(item) {
@@ -227,7 +228,8 @@
227
228
  if (RecordSelect.document_loaded) {
228
229
  this.onload();
229
230
  } else {
230
- var _this = this; jQuery(document).ready(function() { _this.onload(); })
231
+ var _this = this;
232
+ jQuery(document).ready(function() { _this.onload(); });
231
233
  }
232
234
  },
233
235
 
@@ -336,7 +338,7 @@
336
338
  * returns true/false for whether the recordselect is open
337
339
  */
338
340
  is_open: function() {
339
- return jQuery.trim(this.container.html()).length != 0;
341
+ return this.container.children().length != 0;
340
342
  },
341
343
 
342
344
  /**
@@ -21,15 +21,16 @@ module RecordSelectHelper
21
21
  options[:onselect] = "(function(id, label) {#{options[:onselect]}})" if options[:onselect]
22
22
  options[:html] ||= {}
23
23
  options[:html][:id] ||= "rs_#{rand(9999)}"
24
+ js = options.include?(:js) ? options[:js] : request.xhr?
24
25
 
25
26
  controller = assert_controller_responds(options[:params][:controller])
26
27
  record_select_options = {id: record_select_id(controller.controller_path), onselect: options[:onselect] || ''}
27
28
  record_select_options.merge! options[:rs] if options[:rs]
28
29
 
29
30
  rs_data = {type: 'Dialog', id: options[:html][:id], url: url_for(options[:params]), options: record_select_options}
30
- options[:html][:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless request.xhr?
31
+ options[:html][:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless js
31
32
  html = link_to(name, '#', options[:html])
32
- html << record_select_js(**rs_data) if request.xhr?
33
+ html << record_select_js(**rs_data) if js
33
34
 
34
35
  html
35
36
  end
@@ -53,6 +54,7 @@ module RecordSelectHelper
53
54
  options[:class] ||= ''
54
55
  options[:class] << ' recordselect'
55
56
  options[:clear_button] = true unless options.include? :clear_button
57
+ js = options.include?(:js) ? options.delete(:js) : request.xhr?
56
58
 
57
59
  controller = assert_controller_responds(options.delete(:controller))
58
60
  params = options.delete(:params)
@@ -70,10 +72,10 @@ module RecordSelectHelper
70
72
  options.merge!(autocomplete: 'off', onfocus: "this.focused=true", onblur: "this.focused=false")
71
73
  url = url_for({action: :browse, controller: controller.controller_path}.merge(params))
72
74
  rs_data = {type: 'Single', id: options[:id], url: url, options: record_select_options}
73
- options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless request.xhr?
75
+ options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless js
74
76
  html = text_field_tag(name, nil, options)
75
77
  html << button_tag('x', type: :button, class: clear_button_class, aria_label: 'Clear input', title: 'Clear input') if clear_button
76
- html << record_select_js(**rs_data) if request.xhr?
78
+ html << record_select_js(**rs_data) if js
77
79
 
78
80
  html
79
81
  end
@@ -95,6 +97,7 @@ module RecordSelectHelper
95
97
  options[:id] ||= name.gsub(/[\[\]]/, '_')
96
98
  options[:class] ||= ''
97
99
  options[:class] << ' recordselect'
100
+ js = options.include?(:js) ? options.delete(:js) : request.xhr?
98
101
 
99
102
  controller = assert_controller_responds(options.delete(:controller))
100
103
  params = options.delete(:params)
@@ -107,9 +110,9 @@ module RecordSelectHelper
107
110
  options.merge!(autocomplete: 'off', onfocus: "this.focused=true", onblur: "this.focused=false")
108
111
  url = url_for({action: :browse, controller: controller.controller_path}.merge(params))
109
112
  rs_data = {type: 'Autocomplete', id: options[:id], url: url, options: record_select_options}
110
- options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless request.xhr?
113
+ options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless js
111
114
  html = text_field_tag(name, nil, options)
112
- html << record_select_js(**rs_data) if request.xhr?
115
+ html << record_select_js(**rs_data) if js
113
116
 
114
117
  html
115
118
  end
@@ -132,6 +135,7 @@ module RecordSelectHelper
132
135
  options[:class] ||= ''
133
136
  options[:class] << ' recordselect'
134
137
  options.delete(:name)
138
+ js = options.include?(:js) ? options.delete(:js) : request.xhr?
135
139
 
136
140
  controller = assert_controller_responds(options.delete(:controller))
137
141
  params = options.delete(:params)
@@ -142,11 +146,11 @@ module RecordSelectHelper
142
146
  options.merge!(autocomplete: 'off', onfocus: "this.focused=true", onblur: "this.focused=false")
143
147
  url = url_for({action: :browse, controller: controller.controller_path}.merge(params))
144
148
  rs_data = {type: 'Multiple', id: options[:id], url: url, options: record_select_options}
145
- options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless request.xhr?
149
+ options[:data] = rs_data.transform_keys { |k| "rs_#{k}" } unless js
146
150
  html = text_field_tag("#{name}[]", nil, options)
147
151
  html << hidden_field_tag("#{name}[]", '', id: nil)
148
152
  html << content_tag(:ul, '', class: 'record-select-list')
149
- html << record_select_js(**rs_data) if request.xhr?
153
+ html << record_select_js(**rs_data) if js
150
154
 
151
155
  html
152
156
  end
@@ -2,7 +2,7 @@ module RecordSelect
2
2
  module Version
3
3
  MAJOR = 4
4
4
  MINOR = 0
5
- PATCH = 0
5
+ PATCH = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recordselect
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Cambra
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-04-22 00:00:00.000000000 Z
13
+ date: 2025-01-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubygems_version: 3.5.6
100
+ rubygems_version: 3.5.11
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: RecordSelect widget as a replacement for massive drop down lists