shimmer 0.0.23 → 0.0.25

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: 5b8e13a67c158deb5255b9a047415eca407baded8da093d1710c2a63d4e505fb
4
- data.tar.gz: ecdfa43b53f32bca080085f2a1ffafe6393ba2c6739137843d54913fdadd0327
3
+ metadata.gz: 98504a2ff4a7a068681ac784ca6efc00e3d1ec91aabb0f4a5599a12e87f8decf
4
+ data.tar.gz: '08a7c167d5fa3611f925194591c1697b32c8fc1d572d54ea4f642567eadbf3e5'
5
5
  SHA512:
6
- metadata.gz: 84811ac4a7369eff4cd958e0a111151dc98a9998ef0a087959b2ecb41cc883def34ffe4db77d0eb2ec66be752106f654a8884d01aad7e8d5666a02ef80555ca9
7
- data.tar.gz: 5830376aea6021ddf9b557ddab8ebe3b1157cc08ecc5badaead61cf024d24bed9013b3264b350c362b0b3b4f63eb295496595b07d900a36a0f2efe5b3a7a3912
6
+ metadata.gz: a0adc008b3118a00a7ddcccb6d6541a50163cde552250871d33ed047a6299d7edcf9375f138eedb9240850bb47fd28e7913171f9df0dc89eabb5a11dab5de414
7
+ data.tar.gz: 2c99878dfcaa144dcabb5a12920caf3626c3b15e86314c94aa38da5bc832bc4b194ed5c1e53396bcbbb679c23bbd6d590d339a260a104ac7cb2722fd72b55e2c
@@ -13,7 +13,7 @@ module Shimmer
13
13
  end
14
14
  end
15
15
 
16
- def input(method, as: guess_type(method), wrapper_options: {}, description: nil, **options)
16
+ def input(method, as: guess_type(method), wrapper_options: {}, description: nil, label_method: nil, **options)
17
17
  as ||= guess_type(method)
18
18
  options[:class] ||= "input__input"
19
19
  collection = options.delete :collection
@@ -29,8 +29,10 @@ module Shimmer
29
29
  input_class = self.class.input_registry[as]
30
30
  raise "Unknown type #{as}" unless input_class
31
31
  input = input_class.new(builder: self, method: method, options: options, id_method: id_method, collection: collection, name_method: name_method)
32
+ input.prepare
32
33
  wrapper_options.reverse_merge! input.wrapper_options
33
- wrap method: method, content: input.render, classes: classes + ["input--#{as}"], label: options[:label], extra: extra, description: description, options: wrapper_options
34
+ label_method ||= wrapper_options.delete(:label_method)
35
+ wrap method: method, content: input.render, classes: classes + ["input--#{as}"], label: options[:label], extra: extra, description: description, options: wrapper_options, label_method: label_method
34
36
  end
35
37
 
36
38
  private
@@ -65,12 +67,12 @@ module Shimmer
65
67
  object.class.types.keys if object.class.respond_to?(method.to_s.pluralize)
66
68
  end
67
69
 
68
- def wrap(method:, content:, classes:, label:, data: nil, extra: nil, description: nil, options: {})
70
+ def wrap(method:, content:, classes:, label:, data: nil, extra: nil, description: nil, options: {}, label_method: nil)
69
71
  if object&.errors&.[](method)&.any?
70
72
  classes << "input--error"
71
73
  errors = safe_join(object.errors[method].map { |e| content_tag :div, e, class: "input__error" })
72
74
  end
73
- label = label == false ? nil : self.label(method, label, class: "input__label")
75
+ label = label == false ? nil : self.label(label_method || method, label, class: "input__label")
74
76
  description = description.presence ? content_tag(:div, description, class: "input__description") : nil
75
77
  content_tag(:div, safe_join([label, content, description, errors, extra].compact), class: ["input"] + classes, **options)
76
78
  end
@@ -17,6 +17,9 @@ module Shimmer
17
17
  {}
18
18
  end
19
19
 
20
+ def prepare
21
+ end
22
+
20
23
  def initialize(builder:, method:, collection:, id_method:, name_method:, options: {})
21
24
  @builder = builder
22
25
  @method = method
@@ -5,8 +5,16 @@ module Shimmer
5
5
  class RadioField < Field
6
6
  self.type = :radio
7
7
 
8
+ def prepare
9
+ @value = options.delete(:value)
10
+ end
11
+
8
12
  def render
9
- builder.collection_radio_buttons method, collection, id_method, name_method, {}, options
13
+ builder.radio_button method, @value, options
14
+ end
15
+
16
+ def wrapper_options
17
+ {label_method: "#{method}_#{@value.to_s.underscore}".to_sym}
10
18
  end
11
19
  end
12
20
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shimmer
4
+ module Form
5
+ class RadiosField < Field
6
+ self.type = :radios
7
+
8
+ def render
9
+ builder.collection_radio_buttons method, collection, id_method, name_method, {}, options
10
+ end
11
+ end
12
+ end
13
+ end
@@ -27,19 +27,27 @@ module Shimmer
27
27
  end
28
28
 
29
29
  def image_file_path(source, width: nil, height: nil)
30
- image_file_proxy(source, width: width, height: height)&.path
30
+ image_file_proxy(source, width: width, height: height, return_type: :path)
31
31
  end
32
32
 
33
33
  def image_file_url(source, width: nil, height: nil)
34
- image_file_proxy(source, width: width, height: height)&.url
34
+ image_file_proxy(source, width: width, height: height, return_type: :url)
35
35
  end
36
36
 
37
- def image_file_proxy(source, width: nil, height: nil)
37
+ def image_file_proxy(source, width: nil, height: nil, return_type: nil)
38
38
  return if source.blank?
39
39
  return source if source.is_a?(String)
40
40
 
41
41
  blob = source.try(:blob) || source
42
- Shimmer::FileProxy.new(blob_id: blob.id, width: width, height: height)
42
+ proxy = Shimmer::FileProxy.new(blob_id: blob.id, width: width, height: height)
43
+ case return_type
44
+ when nil
45
+ proxy
46
+ when :path
47
+ proxy.path
48
+ when :url
49
+ proxy.url
50
+ end
43
51
  end
44
52
  end
45
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Shimmer
4
- VERSION = "0.0.23"
4
+ VERSION = "0.0.25"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Ravens
@@ -158,6 +158,7 @@ files:
158
158
  - lib/shimmer/form/password_field.rb
159
159
  - lib/shimmer/form/pdf_field.rb
160
160
  - lib/shimmer/form/radio_field.rb
161
+ - lib/shimmer/form/radios_field.rb
161
162
  - lib/shimmer/form/select_field.rb
162
163
  - lib/shimmer/form/text_area_field.rb
163
164
  - lib/shimmer/form/text_field.rb