govuk_design_system_formbuilder 1.2.4 → 2.0.0b2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/govuk_design_system_formbuilder.rb +1 -1
  4. data/lib/govuk_design_system_formbuilder/base.rb +1 -1
  5. data/lib/govuk_design_system_formbuilder/builder.rb +201 -78
  6. data/lib/govuk_design_system_formbuilder/containers/character_count.rb +2 -2
  7. data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +13 -12
  8. data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +4 -3
  9. data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +12 -62
  10. data/lib/govuk_design_system_formbuilder/containers/form_group.rb +19 -10
  11. data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +4 -3
  12. data/lib/govuk_design_system_formbuilder/containers/radios.rb +17 -13
  13. data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +3 -1
  14. data/lib/govuk_design_system_formbuilder/elements/caption.rb +14 -7
  15. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +12 -11
  16. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +9 -7
  17. data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +19 -15
  18. data/lib/govuk_design_system_formbuilder/elements/date.rb +18 -17
  19. data/lib/govuk_design_system_formbuilder/elements/error_message.rb +4 -4
  20. data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +15 -15
  21. data/lib/govuk_design_system_formbuilder/elements/file.rb +11 -10
  22. data/lib/govuk_design_system_formbuilder/elements/hint.rb +37 -10
  23. data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +2 -2
  24. data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +0 -2
  25. data/lib/govuk_design_system_formbuilder/elements/inputs/password.rb +0 -2
  26. data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +0 -2
  27. data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +0 -2
  28. data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +0 -2
  29. data/lib/govuk_design_system_formbuilder/elements/label.rb +28 -22
  30. data/lib/govuk_design_system_formbuilder/elements/legend.rb +87 -0
  31. data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +14 -13
  32. data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +13 -7
  33. data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +15 -7
  34. data/lib/govuk_design_system_formbuilder/elements/select.rb +18 -17
  35. data/lib/govuk_design_system_formbuilder/elements/submit.rb +9 -4
  36. data/lib/govuk_design_system_formbuilder/elements/text_area.rb +10 -9
  37. data/lib/govuk_design_system_formbuilder/traits/caption.rb +1 -9
  38. data/lib/govuk_design_system_formbuilder/traits/collection_item.rb +1 -1
  39. data/lib/govuk_design_system_formbuilder/traits/conditional.rb +1 -1
  40. data/lib/govuk_design_system_formbuilder/traits/hint.rb +15 -2
  41. data/lib/govuk_design_system_formbuilder/traits/input.rb +4 -3
  42. data/lib/govuk_design_system_formbuilder/version.rb +1 -1
  43. metadata +12 -11
@@ -8,22 +8,23 @@ module GOVUKDesignSystemFormBuilder
8
8
  include Traits::Label
9
9
  include Traits::Supplemental
10
10
 
11
- def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, rows:, max_words:, max_chars:, threshold:, **kwargs, &block)
11
+ def initialize(builder, object_name, attribute_name, hint:, label:, caption:, rows:, max_words:, max_chars:, threshold:, form_group:, **kwargs, &block)
12
12
  super(builder, object_name, attribute_name, &block)
13
13
 
14
14
  @label = label
15
15
  @caption = caption
16
- @hint_text = hint_text
16
+ @hint = hint
17
17
  @max_words = max_words
18
18
  @max_chars = max_chars
19
19
  @threshold = threshold
20
20
  @rows = rows
21
+ @form_group = form_group
21
22
  @html_attributes = kwargs
22
23
  end
23
24
 
24
25
  def html
25
26
  Containers::CharacterCount.new(@builder, **character_count_options).html do
26
- Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
27
+ Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
27
28
  safe_join([label_element, supplemental_content, hint_element, error_element, text_area, limit_description])
28
29
  end
29
30
  end
@@ -36,20 +37,20 @@ module GOVUKDesignSystemFormBuilder
36
37
  end
37
38
 
38
39
  def text_area
39
- @builder.text_area(@attribute_name, **text_area_options, **@html_attributes)
40
+ @builder.text_area(@attribute_name, **options, **@html_attributes)
40
41
  end
41
42
 
42
- def text_area_classes
43
+ def classes
43
44
  %w(textarea).prefix(brand).tap do |classes|
44
- classes.push(%(#{brand}-textarea--error)) if has_errors?
45
+ classes.push(%(#{brand}-textarea--error)) if has_errors?
45
46
  classes.push(%(#{brand}-js-character-count)) if limit?
46
47
  end
47
48
  end
48
49
 
49
- def text_area_options
50
+ def options
50
51
  {
51
52
  id: field_id(link_errors: true),
52
- class: text_area_classes,
53
+ class: classes,
53
54
  rows: @rows,
54
55
  aria: { describedby: described_by(hint_id, error_id, supplemental_id, limit_description_id) },
55
56
  }
@@ -78,7 +79,7 @@ module GOVUKDesignSystemFormBuilder
78
79
  def limit_description
79
80
  return nil unless limit?
80
81
 
81
- content_tag('span', id: limit_id, class: limit_description_classes, aria: { live: 'polite' }) do
82
+ tag.span(id: limit_id, class: limit_description_classes, aria: { live: 'polite' }) do
82
83
  "You can enter up to #{limit_quantity} #{limit_type}"
83
84
  end
84
85
  end
@@ -8,15 +8,7 @@ module GOVUKDesignSystemFormBuilder
8
8
  end
9
9
 
10
10
  def caption_options
11
- { text: nil }.merge({ text: caption_text, size: caption_size }.compact)
12
- end
13
-
14
- def caption_text
15
- @caption&.dig(:text)
16
- end
17
-
18
- def caption_size
19
- @caption&.dig(:size)
11
+ @caption
20
12
  end
21
13
  end
22
14
  end
@@ -8,7 +8,7 @@ module GOVUKDesignSystemFormBuilder
8
8
  when Symbol, String
9
9
  item.send(method)
10
10
  when Proc
11
- method.call(item)
11
+ capture { method.call(item) }
12
12
  end
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module GOVUKDesignSystemFormBuilder
8
8
  end
9
9
 
10
10
  def wrap_conditional(block)
11
- content_tag('div', class: conditional_classes, id: conditional_id) do
11
+ tag.div(class: conditional_classes, id: conditional_id) do
12
12
  capture { block.call }
13
13
  end
14
14
  end
@@ -2,7 +2,7 @@ module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Hint
4
4
  def hint_id
5
- return nil if @hint_text.blank?
5
+ return nil unless hint_element.active?
6
6
 
7
7
  build_id('hint')
8
8
  end
@@ -10,7 +10,20 @@ module GOVUKDesignSystemFormBuilder
10
10
  private
11
11
 
12
12
  def hint_element
13
- @hint_element ||= Elements::Hint.new(@builder, @object_name, @attribute_name, @hint_text)
13
+ @hint_element ||= Elements::Hint.new(@builder, @object_name, @attribute_name, **hint_content)
14
+ end
15
+
16
+ def hint_content
17
+ case @hint
18
+ when NilClass
19
+ {}
20
+ when Hash
21
+ @hint
22
+ when Proc
23
+ { content: @hint }
24
+ else
25
+ fail(ArgumentError, %(hint must be a Proc or Hash))
26
+ end
14
27
  end
15
28
  end
16
29
  end
@@ -1,18 +1,19 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Input
4
- def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, width:, **kwargs, &block)
4
+ def initialize(builder, object_name, attribute_name, hint:, label:, caption:, width:, form_group:, **kwargs, &block)
5
5
  super(builder, object_name, attribute_name, &block)
6
6
 
7
7
  @width = width
8
8
  @label = label
9
9
  @caption = caption
10
- @hint_text = hint_text
10
+ @hint = hint
11
11
  @html_attributes = kwargs
12
+ @form_group = form_group
12
13
  end
13
14
 
14
15
  def html
15
- Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
16
+ Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
16
17
  safe_join([label_element, supplemental_content, hint_element, error_element, input])
17
18
  end
18
19
  end
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '1.2.4'.freeze
2
+ VERSION = '2.0.0b2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_design_system_formbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 2.0.0b2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Yates
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-02 00:00:00.000000000 Z
11
+ date: 2020-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 3.16.0
61
+ version: 3.17.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 3.16.0
68
+ version: 3.17.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -176,14 +176,14 @@ dependencies:
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 3.20.0
179
+ version: 3.21.0
180
180
  type: :development
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: 3.20.0
186
+ version: 3.21.0
187
187
  - !ruby/object:Gem::Dependency
188
188
  name: rubypants
189
189
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +277,7 @@ files:
277
277
  - lib/govuk_design_system_formbuilder/elements/inputs/text.rb
278
278
  - lib/govuk_design_system_formbuilder/elements/inputs/url.rb
279
279
  - lib/govuk_design_system_formbuilder/elements/label.rb
280
+ - lib/govuk_design_system_formbuilder/elements/legend.rb
280
281
  - lib/govuk_design_system_formbuilder/elements/radios/collection.rb
281
282
  - lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb
282
283
  - lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
@@ -302,7 +303,7 @@ metadata:
302
303
  documentation_uri: https://www.rubydoc.info/gems/govuk_design_system_formbuilder/GOVUKDesignSystemFormBuilder/Builder
303
304
  homepage_uri: https://govuk-form-builder.netlify.app
304
305
  source_code_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder
305
- post_install_message:
306
+ post_install_message:
306
307
  rdoc_options: []
307
308
  require_paths:
308
309
  - lib
@@ -313,12 +314,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
313
314
  version: '0'
314
315
  required_rubygems_version: !ruby/object:Gem::Requirement
315
316
  requirements:
316
- - - ">="
317
+ - - ">"
317
318
  - !ruby/object:Gem::Version
318
- version: '0'
319
+ version: 1.3.1
319
320
  requirements: []
320
321
  rubygems_version: 3.1.2
321
- signing_key:
322
+ signing_key:
322
323
  specification_version: 4
323
324
  summary: GOV.UK-compliant Rails form builder
324
325
  test_files: []