recordselect 3.10.4 → 3.10.5

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: ecf26cbdaa2d60c795f70e52aacef02a47c1b2a79c354bd0c01535ea00148615
4
- data.tar.gz: 553cdcca188b034d7821c32f7eeca222d6f55eeacb9bbaddf4b2ad473b4ffff5
3
+ metadata.gz: cbec8fe7307cc016095843fff9ff55706c5982a7773a590dc80be7a4b5f58271
4
+ data.tar.gz: e5d51be0faf92fc8241c59981eb94245deeacdb454d6092dd4dcd2f31993d7ef
5
5
  SHA512:
6
- metadata.gz: 44e3c065ef8a06e293d917e245384b2eb16a23f2ef51ab1cb59de03d7293323f8d57b360cbabb0de6ba2e02e7fabbaa2f78c59eb68d45a782d06ab61379f1aa2
7
- data.tar.gz: e4ca3f2130b36660e76803bd954b9926dc1a7da0454deed4bb59fb2d3d71e627c541a2ef07d8a0b27630827d294265c144c3294a8bb89a199e1da02964a8d0c3
6
+ metadata.gz: 76208f34d043176e2ca3bd0c8b5b701d0526f3fc4c9e668fd39db4a56ef8cd8c17583427d626fff4366e45923ff040201470adea1eb2a623d1dc17285ccd5e00
7
+ data.tar.gz: af24de9c32c0a8cfc1c78097d3548b3cfb5b26f7ebc83992d1d70894a1f5bad8f4020930d24b08861279f49d7ddff0b524e9f2d0ef6a988e6ab02b412d1a7e14
@@ -131,6 +131,18 @@ jQuery(document).ready(function() {
131
131
  rs.current_xhr = null;
132
132
  }
133
133
  });
134
+ jQuery(document).on('click', 'input.recordselect ~ .clear-input-button', function() {
135
+ var $clear_button = jQuery(event.target), $input = $clear_button.prevAll('input');
136
+ if (!$input.length) return;
137
+ $input.val('').removeClass('selected');
138
+ $clear_button.removeClass('enabled');
139
+ });
140
+ jQuery(document).on('input recordselect:change', 'input.recordselect', function(event) {
141
+ var $clear_button = jQuery(event.target).nextAll('.clear-input-button').first();
142
+ if (!$clear_button.length) return;
143
+ if (jQuery(event.target).val()) $clear_button.addClass('enabled');
144
+ else $clear_button.removeClass('enabled');
145
+ });
134
146
  });
135
147
 
136
148
  var RecordSelect = new Object();
@@ -148,3 +148,32 @@ iframe.record-select-mask {
148
148
  background-repeat: no-repeat;
149
149
  padding-right: 20px;
150
150
  }
151
+
152
+ .recordselect + input[type=hidden] + button.clear-input-button {
153
+ /* button position */
154
+ position: relative;
155
+ right: 20px;
156
+ top: 3px;
157
+ /* button appearane */
158
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23777'><path d='M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/></svg>");
159
+ background-color: transparent;
160
+ width: 16px;
161
+ height: 16px;
162
+ appearance: none;
163
+ border: none;
164
+ border-radius: 50%;
165
+ margin: 0;
166
+ cursor: pointer;
167
+ text-indent: 20px;
168
+ overflow: hidden;
169
+ display: none;
170
+ &.enabled {
171
+ display: inline-block;
172
+ }
173
+ &:hover {
174
+ background-color: lightgray;
175
+ }
176
+ }
177
+ .recordselect.selected + input[type=hidden] + button.clear-input-button {
178
+ right: 40px;
179
+ }
@@ -46,18 +46,22 @@ module RecordSelectHelper
46
46
  options[:id] ||= name.gsub(/[\[\]]/, '_')
47
47
  options[:class] ||= ''
48
48
  options[:class] << ' recordselect'
49
+ options[:clear_button] = true unless options.include? :clear_button
49
50
 
50
51
  controller = assert_controller_responds(options.delete(:controller))
51
52
  params = options.delete(:params)
52
53
  record_select_options = {id: record_select_id(controller.controller_path)}
53
54
  record_select_options[:field_name] = options.delete(:field_name) if options[:field_name]
55
+ clear_button_class = 'clear-input-button'
54
56
  if current and not current.new_record?
55
57
  record_select_options[:id] = current.id
56
58
  record_select_options[:label] = label_for_field(current, controller)
59
+ clear_button_class << ' enabled'
57
60
  end
58
61
  record_select_options.merge! options[:rs] if options[:rs]
59
62
 
60
63
  html = text_field_tag(name, nil, options.merge(:autocomplete => 'off', :onfocus => "this.focused=true", :onblur => "this.focused=false"))
64
+ html << button_tag('x', type: :reset, class: clear_button_class, aria_label: 'Clear input', title: 'Clear input') if options[:clear_button]
61
65
  url = url_for({:action => :browse, :controller => controller.controller_path}.merge(params))
62
66
  html << javascript_tag("new RecordSelect.Single(#{options[:id].to_json}, #{url.to_json}, #{record_select_options.to_json});")
63
67
 
@@ -2,7 +2,7 @@ module RecordSelect
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 10
5
- PATCH = 4
5
+ PATCH = 5
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: 3.10.4
4
+ version: 3.10.5
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: 2022-03-07 00:00:00.000000000 Z
13
+ date: 2024-02-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubygems_version: 3.3.7
102
+ rubygems_version: 3.2.3
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: RecordSelect widget as a replacement for massive drop down lists