shimmer 0.0.24 → 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: c0eaed2568e6fdbdc41b8c47337b1c514f0db410c597c3b5727eb3de9ffa2367
4
- data.tar.gz: b946998c24efbe8fe0307ef55ea9971233be36623cdbcdbd283306c319132d02
3
+ metadata.gz: 98504a2ff4a7a068681ac784ca6efc00e3d1ec91aabb0f4a5599a12e87f8decf
4
+ data.tar.gz: '08a7c167d5fa3611f925194591c1697b32c8fc1d572d54ea4f642567eadbf3e5'
5
5
  SHA512:
6
- metadata.gz: 13279649e9331c200c8491974f57fc659aff3b60242f93683fba9a55d0d75583a32c6b9eaab4a4d128207f5be416b55493af629cd87edd02d01cc52c946da4da
7
- data.tar.gz: 8f200cd8ed792dc4a33d2ab7fc2d0607a00ea9a2a4ad32f278d655a21d1510d7cd614483d15077cb99ab2ca9b124c6ec94b02cf8471740b0b17497f94bc61354
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Shimmer
4
- VERSION = "0.0.24"
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.24
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