govuk_design_system_formbuilder 2.1.7 → 2.3.0

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +3 -3
  4. data/lib/govuk_design_system_formbuilder.rb +10 -0
  5. data/lib/govuk_design_system_formbuilder/base.rb +9 -0
  6. data/lib/govuk_design_system_formbuilder/builder.rb +28 -19
  7. data/lib/govuk_design_system_formbuilder/containers/button_group.rb +15 -0
  8. data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +2 -2
  9. data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +11 -8
  10. data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +2 -2
  11. data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +1 -1
  12. data/lib/govuk_design_system_formbuilder/elements/caption.rb +3 -3
  13. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +15 -14
  14. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +2 -2
  15. data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +4 -2
  16. data/lib/govuk_design_system_formbuilder/elements/date.rb +13 -12
  17. data/lib/govuk_design_system_formbuilder/elements/error_message.rb +1 -1
  18. data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +11 -4
  19. data/lib/govuk_design_system_formbuilder/elements/file.rb +3 -2
  20. data/lib/govuk_design_system_formbuilder/elements/hint.rb +1 -1
  21. data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +1 -0
  22. data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +1 -0
  23. data/lib/govuk_design_system_formbuilder/elements/inputs/password.rb +1 -0
  24. data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +1 -0
  25. data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +1 -0
  26. data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +1 -0
  27. data/lib/govuk_design_system_formbuilder/elements/label.rb +3 -3
  28. data/lib/govuk_design_system_formbuilder/elements/legend.rb +3 -5
  29. data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +3 -3
  30. data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +3 -3
  31. data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +8 -6
  32. data/lib/govuk_design_system_formbuilder/elements/select.rb +22 -19
  33. data/lib/govuk_design_system_formbuilder/elements/submit.rb +21 -14
  34. data/lib/govuk_design_system_formbuilder/elements/text_area.rb +5 -4
  35. data/lib/govuk_design_system_formbuilder/traits/caption.rb +1 -1
  36. data/lib/govuk_design_system_formbuilder/traits/error.rb +2 -2
  37. data/lib/govuk_design_system_formbuilder/traits/fieldset_item.rb +2 -2
  38. data/lib/govuk_design_system_formbuilder/traits/hint.rb +2 -2
  39. data/lib/govuk_design_system_formbuilder/traits/html_attributes.rb +9 -0
  40. data/lib/govuk_design_system_formbuilder/traits/input.rb +5 -5
  41. data/lib/govuk_design_system_formbuilder/traits/label.rb +1 -1
  42. data/lib/govuk_design_system_formbuilder/traits/supplemental.rb +2 -2
  43. data/lib/govuk_design_system_formbuilder/version.rb +1 -1
  44. metadata +35 -4
@@ -7,6 +7,7 @@ module GOVUKDesignSystemFormBuilder
7
7
  include Traits::Hint
8
8
  include Traits::Label
9
9
  include Traits::Supplemental
10
+ include Traits::HTMLAttributes
10
11
 
11
12
  def initialize(builder, object_name, attribute_name, hint:, label:, caption:, rows:, max_words:, max_chars:, threshold:, form_group:, **kwargs, &block)
12
13
  super(builder, object_name, attribute_name, &block)
@@ -24,7 +25,7 @@ module GOVUKDesignSystemFormBuilder
24
25
 
25
26
  def html
26
27
  Containers::CharacterCount.new(@builder, **character_count_options).html do
27
- Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
28
+ Containers::FormGroup.new(*bound, **@form_group).html do
28
29
  safe_join([label_element, supplemental_content, hint_element, error_element, text_area, limit_description])
29
30
  end
30
31
  end
@@ -37,7 +38,7 @@ module GOVUKDesignSystemFormBuilder
37
38
  end
38
39
 
39
40
  def text_area
40
- @builder.text_area(@attribute_name, **options, **@html_attributes)
41
+ @builder.text_area(@attribute_name, **attributes(@html_attributes))
41
42
  end
42
43
 
43
44
  def classes
@@ -77,7 +78,7 @@ module GOVUKDesignSystemFormBuilder
77
78
  end
78
79
 
79
80
  def limit_description
80
- return nil unless limit?
81
+ return unless limit?
81
82
 
82
83
  tag.span(id: limit_id, class: limit_description_classes, aria: { live: 'polite' }) do
83
84
  "You can enter up to #{limit_quantity} #{limit_type}"
@@ -89,7 +90,7 @@ module GOVUKDesignSystemFormBuilder
89
90
  end
90
91
 
91
92
  def limit_description_id
92
- return nil unless limit?
93
+ return unless limit?
93
94
 
94
95
  limit_id
95
96
  end
@@ -7,7 +7,7 @@ module GOVUKDesignSystemFormBuilder
7
7
  @caption_element ||= if @caption.nil?
8
8
  Elements::Null.new
9
9
  else
10
- Elements::Caption.new(@builder, @object_name, @attribute_name, **@caption)
10
+ Elements::Caption.new(*bound, **@caption)
11
11
  end
12
12
  end
13
13
  end
@@ -2,7 +2,7 @@ module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Error
4
4
  def error_id
5
- return nil unless has_errors?
5
+ return unless has_errors?
6
6
 
7
7
  build_id('error')
8
8
  end
@@ -10,7 +10,7 @@ module GOVUKDesignSystemFormBuilder
10
10
  private
11
11
 
12
12
  def error_element
13
- @error_element ||= Elements::ErrorMessage.new(@builder, @object_name, @attribute_name)
13
+ @error_element ||= Elements::ErrorMessage.new(*bound)
14
14
  end
15
15
  end
16
16
  end
@@ -7,7 +7,7 @@ module GOVUKDesignSystemFormBuilder
7
7
  @label_element ||= if @label.nil?
8
8
  Elements::Null.new
9
9
  else
10
- Elements::Label.new(@builder, @object_name, @attribute_name, **label_content, **label_options)
10
+ Elements::Label.new(*bound, **label_content, **label_options)
11
11
  end
12
12
  end
13
13
 
@@ -19,7 +19,7 @@ module GOVUKDesignSystemFormBuilder
19
19
  @hint_element ||= if @hint.nil?
20
20
  Elements::Null.new
21
21
  else
22
- Elements::Hint.new(@builder, @object_name, @attribute_name, **hint_options, **hint_content)
22
+ Elements::Hint.new(*bound, **hint_options, **hint_content)
23
23
  end
24
24
  end
25
25
 
@@ -2,7 +2,7 @@ module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Hint
4
4
  def hint_id
5
- return nil unless hint_element.active?
5
+ return unless hint_element.active?
6
6
 
7
7
  build_id('hint')
8
8
  end
@@ -13,7 +13,7 @@ module GOVUKDesignSystemFormBuilder
13
13
  @hint_element ||= if @hint.nil?
14
14
  Elements::Null.new
15
15
  else
16
- Elements::Hint.new(@builder, @object_name, @attribute_name, **hint_content)
16
+ Elements::Hint.new(*bound, **hint_content)
17
17
  end
18
18
  end
19
19
 
@@ -0,0 +1,9 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Traits
3
+ module HTMLAttributes
4
+ def attributes(html_attributes = {})
5
+ options.deeper_merge(html_attributes)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -15,7 +15,7 @@ module GOVUKDesignSystemFormBuilder
15
15
  end
16
16
 
17
17
  def html
18
- Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
18
+ Containers::FormGroup.new(*bound, **@form_group).html do
19
19
  safe_join([label_element, supplemental_content, hint_element, error_element, content])
20
20
  end
21
21
  end
@@ -31,13 +31,13 @@ module GOVUKDesignSystemFormBuilder
31
31
  end
32
32
 
33
33
  def affixed_input
34
- content_tag('div', class: %(#{brand}-input__wrapper)) do
34
+ tag.div(class: %(#{brand}-input__wrapper)) do
35
35
  safe_join([prefix, input, suffix])
36
36
  end
37
37
  end
38
38
 
39
39
  def input
40
- @builder.send(builder_method, @attribute_name, **options, **@html_attributes)
40
+ @builder.send(builder_method, @attribute_name, **attributes(@html_attributes))
41
41
  end
42
42
 
43
43
  def affixed?
@@ -86,13 +86,13 @@ module GOVUKDesignSystemFormBuilder
86
86
  end
87
87
 
88
88
  def prefix
89
- return nil if @prefix_text.blank?
89
+ return if @prefix_text.blank?
90
90
 
91
91
  tag.span(@prefix_text, class: %(#{brand}-input__prefix), **affix_options)
92
92
  end
93
93
 
94
94
  def suffix
95
- return nil if @suffix_text.blank?
95
+ return if @suffix_text.blank?
96
96
 
97
97
  tag.span(@suffix_text, class: %(#{brand}-input__suffix), **affix_options)
98
98
  end
@@ -7,7 +7,7 @@ module GOVUKDesignSystemFormBuilder
7
7
  @label_element ||= if @label.nil?
8
8
  Elements::Null.new
9
9
  else
10
- Elements::Label.new(@builder, @object_name, @attribute_name, caption: @caption, **label_content)
10
+ Elements::Label.new(*bound, caption: @caption, **label_content)
11
11
  end
12
12
  end
13
13
 
@@ -2,7 +2,7 @@ module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Supplemental
4
4
  def supplemental_id
5
- return nil if @block_content.blank?
5
+ return if @block_content.blank?
6
6
 
7
7
  build_id('supplemental')
8
8
  end
@@ -10,7 +10,7 @@ module GOVUKDesignSystemFormBuilder
10
10
  private
11
11
 
12
12
  def supplemental_content
13
- @supplemental_content ||= Containers::Supplemental.new(@builder, @object_name, @attribute_name, @block_content)
13
+ @supplemental_content ||= Containers::Supplemental.new(*bound, @block_content)
14
14
  end
15
15
  end
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '2.1.7'.freeze
2
+ VERSION = '2.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_design_system_formbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.7
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-27 00:00:00.000000000 Z
11
+ date: 2021-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deep_merge
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: actionview
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +72,14 @@ dependencies:
58
72
  requirements:
59
73
  - - '='
60
74
  - !ruby/object:Gem::Version
61
- version: 3.17.2
75
+ version: 4.0.0.pre.1
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - '='
67
81
  - !ruby/object:Gem::Version
68
- version: 3.17.2
82
+ version: 4.0.0.pre.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: pry
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -240,6 +254,20 @@ dependencies:
240
254
  - - "~>"
241
255
  - !ruby/object:Gem::Version
242
256
  version: 4.1.0
257
+ - !ruby/object:Gem::Dependency
258
+ name: puma
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '5.2'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '5.2'
243
271
  description: A Rails form builder that generates form inputs adhering to the GOV.UK
244
272
  Design System
245
273
  email:
@@ -248,10 +276,12 @@ executables: []
248
276
  extensions: []
249
277
  extra_rdoc_files: []
250
278
  files:
279
+ - LICENSE
251
280
  - README.md
252
281
  - lib/govuk_design_system_formbuilder.rb
253
282
  - lib/govuk_design_system_formbuilder/base.rb
254
283
  - lib/govuk_design_system_formbuilder/builder.rb
284
+ - lib/govuk_design_system_formbuilder/containers/button_group.rb
255
285
  - lib/govuk_design_system_formbuilder/containers/character_count.rb
256
286
  - lib/govuk_design_system_formbuilder/containers/check_boxes.rb
257
287
  - lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb
@@ -291,6 +321,7 @@ files:
291
321
  - lib/govuk_design_system_formbuilder/traits/error.rb
292
322
  - lib/govuk_design_system_formbuilder/traits/fieldset_item.rb
293
323
  - lib/govuk_design_system_formbuilder/traits/hint.rb
324
+ - lib/govuk_design_system_formbuilder/traits/html_attributes.rb
294
325
  - lib/govuk_design_system_formbuilder/traits/input.rb
295
326
  - lib/govuk_design_system_formbuilder/traits/label.rb
296
327
  - lib/govuk_design_system_formbuilder/traits/localisation.rb