recordselect 4.0.0 → 4.0.2

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
  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