govuk_design_system_formbuilder 2.0.0b1 → 2.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52cc4abc62b3ac208e8fe2befb527b6deda60868d2094a3172d907bc0ce82654
4
- data.tar.gz: fb0c810a65f025e226fe4dc0cee0c5b42b3b7baa499b032d6f88d4ec2fac9d54
3
+ metadata.gz: c55b78722270c864a735be507e018c420e14bee0e408c59da1bc61777c320bf7
4
+ data.tar.gz: b0d291bca6a13a77fe21db5c431bfea86184de8acd82b5e4cc3a3c944fdf322c
5
5
  SHA512:
6
- metadata.gz: 996a9f979a4eab0a16499f81cf39fdcfbd0c641dd5d2944c52be697cd6f1f8870b75c6fd4b498d3769265fa39168f7baefe36bb53255bc50a9bfcb82f06bd641
7
- data.tar.gz: ef2f8f3eaba7ea21b2ae18a7a4ba8c181981164f36917d082ff5f2545896df17c6b27c9acab09621d3e5453013d9e5747e5f838b54bc2f2e68aed585980190d9
6
+ metadata.gz: a130e8bb5964af17acb89a14f02ecda2ed989c1e18c6ed970a400945be78c5a8fdc0dd735333b026f51b75a5d090c4e6403f3594feedf595b21c294abec13ae7
7
+ data.tar.gz: 9afc6f6e12e26bdc2cd4eafc41f2d1e5a972829fd18bd2a2571550b683500320a66f6603d159af0e7c0943b57deeaf8b47267499ac4cf2c3577d207b555cfcba
data/README.md CHANGED
@@ -7,41 +7,32 @@
7
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/fde73b5dc9476197281b/test_coverage)](https://codeclimate.com/github/DFE-Digital/govuk_design_system_formbuilder/test_coverage)
8
8
  [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=DFE-Digital/govuk_design_system_formbuilder)](https://dependabot.com)
9
9
  [![GitHub license](https://img.shields.io/github/license/DFE-Digital/govuk_design_system_formbuilder)](https://github.com/DFE-Digital/govuk_design_system_formbuilder/blob/master/LICENSE)
10
- [![GOV.UK Design System Version](https://img.shields.io/badge/GOV.UK%20Design%20System-3.8.1-brightgreen)](https://design-system.service.gov.uk)
10
+ [![GOV.UK Design System Version](https://img.shields.io/badge/GOV.UK%20Design%20System-3.9.1-brightgreen)](https://design-system.service.gov.uk)
11
11
 
12
- This gem provides a easy-to-use form builder that generates forms that are
13
- fully-compliant with version 3.8.1 of the [GOV.UK Design System](https://design-system.service.gov.uk/),
14
- minimising the amount of markup you need to write.
12
+ This library provides an easy-to-use form builder for the [GOV.UK Design System](https://design-system.service.gov.uk/).
15
13
 
16
- In addition to the basic markup, the more-advanced functionality of the Design
17
- System is exposed via the API. Adding [JavaScript-enhanced word count
18
- checking](https://govuk-form-builder.netlify.app/form-elements/text-area/)
19
- to text areas or [setting the size and weight of
20
- labels](https://govuk-form-builder.netlify.app/introduction/labels-hints-and-legends/)
21
- on text fields requires only a single argument.
14
+ It is intended to make creating forms **quick**, **easy** and **familiar** for Ruby on Rails developers.
22
15
 
23
16
  ## Documentation 📚
24
17
 
25
18
  The gem comes with [a full guide](https://govuk-form-builder.netlify.app/) that
26
- covers most aspects of day-to-day use, along with code and output examples. The guide
27
- is generated from the builder itself so it will always be up to date.
28
-
29
- If you're still not sure what a form builder is or how it works, don't worry!
30
- [This screencast](https://www.youtube.com/watch?v=PhoFZ0qXAlA) should give you
31
- an idea of what's on offer and the official guide goes into a bit more depth on
32
- how everything works.
19
+ covers most aspects of day-to-day use, along with code and output examples. The
20
+ examples in the guide are generated from the builder itself so it will always
21
+ be up to date.
33
22
 
34
23
  [![Netlify Status](https://api.netlify.com/api/v1/badges/d4c50b8d-6ca3-4797-9ab3-6e0731c72b44/deploy-status)](https://app.netlify.com/sites/govuk-form-builder/deploys)
35
24
 
36
25
  ## What's included 🧳
37
26
 
38
27
  * 100% compatibility with the GOV.UK Design System
39
- * Full control of labels, hints, fieldsets and legends
28
+ * Full control of labels, legends, hints, captions and fieldsets
40
29
  * No overwriting of Rails' default form helpers
41
30
  * Automatic ARIA associations between hints, errors and inputs
42
31
  * Most helpers take blocks for arbitrary content
43
32
  * Additional params for programmatically adding hints to check box and radio
44
33
  button collections
34
+ * Full I18n support
35
+ * Automatic handling of ActiveRecord validation error messages
45
36
  * No external dependencies
46
37
  * An exhaustive test suite
47
38
  * [Extensive technical documentation](https://www.rubydoc.info/gems/govuk_design_system_formbuilder/GOVUKDesignSystemFormBuilder/Builder)
@@ -68,8 +59,9 @@ pre-configured template:
68
59
 
69
60
  ## Setup 🔧
70
61
 
71
- To use the form builder in an ad hoc basis you can specify it
72
- as an argument to `form_for` or `form_with`:
62
+ To use the form builder in an ad hoc basis you can specify it as an argument to
63
+ `form_for` or `form_with`. These examples are written in [Slim](https://slim-lang.com) but
64
+ other templating languages like ERB and [Haml](https://haml.info/) work just as well.
73
65
 
74
66
  ```slim
75
67
  = form_for @some_object, builder: GOVUKDesignSystemFormBuilder::FormBuilder do |f|
@@ -99,16 +91,16 @@ Now we can get started!
99
91
  :name,
100
92
  :description,
101
93
  label: { text: "Which department do you work for?" },
102
- hint_text: "If you don't know ask your manager" }
94
+ hint: { text: "If you don't know ask your manager" }
103
95
 
104
96
  = f.govuk_submit 'Away we go!'
105
97
  ```
106
98
 
107
99
  ## Developing and running the tests 👨🏻‍🏭
108
100
 
109
- The form builder is covered by RSpec, to run all the tests first ensure that
110
- all of the development and testing prerequisite gems are installed. At the root
111
- of a freshly-cloned repo run:
101
+ The form builder is tested with RSpec. To run all the tests first ensure that
102
+ the development and testing prerequisite gems are installed. At the root of a
103
+ freshly-cloned repo run:
112
104
 
113
105
  ```sh
114
106
  bundle
@@ -117,7 +109,7 @@ bundle
117
109
  Now, if everything was successful, run RSpec:
118
110
 
119
111
  ```sh
120
- bundle exec rspec -fd
112
+ bundle exec rspec
121
113
  ```
122
114
 
123
115
  ## Contributing 📦
@@ -21,7 +21,7 @@ module GOVUKDesignSystemFormBuilder
21
21
  # Can be either +xl+, +l+, +m+ or +s+.
22
22
  #
23
23
  # * +:default_legend_tag+ controls the default tag that legends are
24
- # wrapped in. Defaults to +h1+.
24
+ # wrapped in. Defaults to +nil+.
25
25
  #
26
26
  # * +:default_submit_button_text+ sets the value assigned to +govuk_submit+,
27
27
  # defaults to 'Continue'.
@@ -47,7 +47,7 @@ module GOVUKDesignSystemFormBuilder
47
47
  brand: 'govuk',
48
48
 
49
49
  default_legend_size: 'm',
50
- default_legend_tag: 'h1',
50
+ default_legend_tag: nil,
51
51
  default_caption_size: 'm',
52
52
  default_submit_button_text: 'Continue',
53
53
  default_radio_divider_text: 'or',
@@ -8,7 +8,7 @@ module GOVUKDesignSystemFormBuilder
8
8
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
9
9
  # supplied the hint will be wrapped in a +div+ instead of a +span+
10
10
  # @option hint text [String] the hint text
11
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
11
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
12
12
  #
13
13
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
14
14
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
@@ -17,13 +17,17 @@ module GOVUKDesignSystemFormBuilder
17
17
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
18
18
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
19
19
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
20
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
20
21
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
21
22
  # @option caption text [String] the caption text
22
23
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
23
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
24
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
25
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
24
26
  # @param form_group [Hash] configures the form group
25
27
  # @option form_group classes [Array,String] sets the form group's classes
26
- # @option form_group args [Hash] additional attributes added to the form group
28
+ # @option form_group kwargs [Hash] additional attributes added to the form group
29
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
30
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
27
31
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
28
32
  # @return [ActiveSupport::SafeBuffer] HTML output
29
33
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -47,8 +51,8 @@ module GOVUKDesignSystemFormBuilder
47
51
  # = f.govuk_text_field :callsign,
48
52
  # label: -> { tag.h3('Call-sign') }
49
53
  #
50
- def govuk_text_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, **args, &block)
51
- Elements::Inputs::Text.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
54
+ def govuk_text_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
55
+ Elements::Inputs::Text.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
52
56
  end
53
57
 
54
58
  # Generates a input of type +tel+
@@ -57,7 +61,7 @@ module GOVUKDesignSystemFormBuilder
57
61
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
58
62
  # supplied the hint will be wrapped in a +div+ instead of a +span+
59
63
  # @option hint text [String] the hint text
60
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
64
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
61
65
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
62
66
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
63
67
  # @param label [Hash,Proc] configures or sets the associated label content
@@ -65,13 +69,17 @@ module GOVUKDesignSystemFormBuilder
65
69
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
66
70
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
67
71
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
72
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
68
73
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
69
74
  # @option caption text [String] the caption text
70
75
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
71
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
76
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
77
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
72
78
  # @param form_group [Hash] configures the form group
73
79
  # @option form_group classes [Array,String] sets the form group's classes
74
- # @option form_group args [Hash] additional attributes added to the form group
80
+ # @option form_group kwargs [Hash] additional attributes added to the form group
81
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
82
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
75
83
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
76
84
  # @return [ActiveSupport::SafeBuffer] HTML output
77
85
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -96,8 +104,8 @@ module GOVUKDesignSystemFormBuilder
96
104
  # = f.govuk_phone_field :work_number,
97
105
  # label: -> { tag.h3('Work number') }
98
106
  #
99
- def govuk_phone_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, **args, &block)
100
- Elements::Inputs::Phone.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
107
+ def govuk_phone_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
108
+ Elements::Inputs::Phone.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
101
109
  end
102
110
 
103
111
  # Generates a input of type +email+
@@ -106,7 +114,7 @@ module GOVUKDesignSystemFormBuilder
106
114
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
107
115
  # supplied the hint will be wrapped in a +div+ instead of a +span+
108
116
  # @option hint text [String] the hint text
109
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
117
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
110
118
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
111
119
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
112
120
  # @param label [Hash,Proc] configures or sets the associated label content
@@ -114,13 +122,17 @@ module GOVUKDesignSystemFormBuilder
114
122
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
115
123
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
116
124
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
125
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
117
126
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
118
127
  # @option caption text [String] the caption text
119
128
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
120
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
129
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
130
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
121
131
  # @param form_group [Hash] configures the form group
122
132
  # @option form_group classes [Array,String] sets the form group's classes
123
- # @option form_group args [Hash] additional attributes added to the form group
133
+ # @option form_group kwargs [Hash] additional attributes added to the form group
134
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
135
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
124
136
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
125
137
  # @return [ActiveSupport::SafeBuffer] HTML output
126
138
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -143,8 +155,8 @@ module GOVUKDesignSystemFormBuilder
143
155
  # = f.govuk_email_field :personal_email,
144
156
  # label: -> { tag.h3('Personal email address') }
145
157
  #
146
- def govuk_email_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, **args, &block)
147
- Elements::Inputs::Email.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
158
+ def govuk_email_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
159
+ Elements::Inputs::Email.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
148
160
  end
149
161
 
150
162
  # Generates a input of type +password+
@@ -153,7 +165,7 @@ module GOVUKDesignSystemFormBuilder
153
165
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
154
166
  # supplied the hint will be wrapped in a +div+ instead of a +span+
155
167
  # @option hint text [String] the hint text
156
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
168
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
157
169
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
158
170
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
159
171
  # @param label [Hash,Proc] configures or sets the associated label content
@@ -161,13 +173,17 @@ module GOVUKDesignSystemFormBuilder
161
173
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
162
174
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
163
175
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
176
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
164
177
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
165
178
  # @option caption text [String] the caption text
166
179
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
167
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
180
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
181
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
168
182
  # @param form_group [Hash] configures the form group
169
183
  # @option form_group classes [Array,String] sets the form group's classes
170
- # @option form_group args [Hash] additional attributes added to the form group
184
+ # @option form_group kwargs [Hash] additional attributes added to the form group
185
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
186
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
171
187
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
172
188
  # @return [ActiveSupport::SafeBuffer] HTML output
173
189
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -189,8 +205,8 @@ module GOVUKDesignSystemFormBuilder
189
205
  # = f.govuk_password_field :passcode,
190
206
  # label: -> { tag.h3('What is your secret pass code?') }
191
207
  #
192
- def govuk_password_field(attribute_name, hint: {}, label: {}, width: nil, form_group: {}, caption: {}, **args, &block)
193
- Elements::Inputs::Password.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
208
+ def govuk_password_field(attribute_name, hint: {}, label: {}, width: nil, form_group: {}, caption: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
209
+ Elements::Inputs::Password.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
194
210
  end
195
211
 
196
212
  # Generates a input of type +url+
@@ -199,7 +215,7 @@ module GOVUKDesignSystemFormBuilder
199
215
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
200
216
  # supplied the hint will be wrapped in a +div+ instead of a +span+
201
217
  # @option hint text [String] the hint text
202
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
218
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
203
219
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
204
220
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
205
221
  # @param label [Hash,Proc] configures or sets the associated label content
@@ -207,13 +223,17 @@ module GOVUKDesignSystemFormBuilder
207
223
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
208
224
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
209
225
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
226
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
210
227
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
211
228
  # @option caption text [String] the caption text
212
229
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
213
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
230
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
231
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
214
232
  # @param form_group [Hash] configures the form group
215
233
  # @option form_group classes [Array,String] sets the form group's classes
216
- # @option form_group args [Hash] additional attributes added to the form group
234
+ # @option form_group kwargs [Hash] additional attributes added to the form group
235
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
236
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
217
237
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
218
238
  # @return [ActiveSupport::SafeBuffer] HTML output
219
239
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -236,8 +256,8 @@ module GOVUKDesignSystemFormBuilder
236
256
  # = f.govuk_url_field :work_website,
237
257
  # label: -> { tag.h3("Enter your company's website") }
238
258
  #
239
- def govuk_url_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, **args, &block)
240
- Elements::Inputs::URL.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
259
+ def govuk_url_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
260
+ Elements::Inputs::URL.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
241
261
  end
242
262
 
243
263
  # Generates a input of type +number+
@@ -246,7 +266,7 @@ module GOVUKDesignSystemFormBuilder
246
266
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
247
267
  # supplied the hint will be wrapped in a +div+ instead of a +span+
248
268
  # @option hint text [String] the hint text
249
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
269
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
250
270
  # @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
251
271
  # or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
252
272
  # @param label [Hash,Proc] configures or sets the associated label content
@@ -254,13 +274,17 @@ module GOVUKDesignSystemFormBuilder
254
274
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
255
275
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
256
276
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
277
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
257
278
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
258
279
  # @option caption text [String] the caption text
259
280
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
260
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
281
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
282
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
261
283
  # @param form_group [Hash] configures the form group
262
284
  # @option form_group classes [Array,String] sets the form group's classes
263
- # @option form_group args [Hash] additional attributes added to the form group
285
+ # @option form_group kwargs [Hash] additional attributes added to the form group
286
+ # @param prefix_text [String] the text placed before the input. No prefix will be added if left +nil+
287
+ # @param suffix_text [String] the text placed after the input. No suffix will be added if left +nil+
264
288
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
265
289
  # @return [ActiveSupport::SafeBuffer] HTML output
266
290
  # @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
@@ -286,8 +310,8 @@ module GOVUKDesignSystemFormBuilder
286
310
  # = f.govuk_url_field :personal_best_over_100m,
287
311
  # label: -> { tag.h3("How many seconds does it take you to run 100m?") }
288
312
  #
289
- def govuk_number_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, **args, &block)
290
- Elements::Inputs::Number.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, **args, &block).html
313
+ def govuk_number_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block)
314
+ Elements::Inputs::Number.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, width: width, form_group: form_group, prefix_text: prefix_text, suffix_text: suffix_text, **kwargs, &block).html
291
315
  end
292
316
 
293
317
  # Generates a +textarea+ element with a label, optional hint. Also offers
@@ -298,23 +322,25 @@ module GOVUKDesignSystemFormBuilder
298
322
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
299
323
  # supplied the hint will be wrapped in a +div+ instead of a +span+
300
324
  # @option hint text [String] the hint text
301
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
325
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
302
326
  # @param label [Hash,Proc] configures or sets the associated label content
303
327
  # @option label text [String] the label text
304
328
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
305
329
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
306
330
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
331
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
307
332
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
308
333
  # @option caption text [String] the caption text
309
334
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
335
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
310
336
  # @param max_words [Integer] adds the GOV.UK max word count
311
337
  # @param max_chars [Integer] adds the GOV.UK max characters count
312
338
  # @param threshold [Integer] only show the +max_words+ and +max_chars+ warnings once a threshold (percentage) is reached
313
339
  # @param rows [Integer] sets the initial number of rows
314
- # @option args [Hash] args additional arguments are applied as attributes to the +textarea+ element
340
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +textarea+ element
315
341
  # @param form_group [Hash] configures the form group
316
342
  # @option form_group classes [Array,String] sets the form group's classes
317
- # @option form_group args [Hash] additional attributes added to the form group
343
+ # @option form_group kwargs [Hash] additional attributes added to the form group
318
344
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
319
345
  # @return [ActiveSupport::SafeBuffer] HTML output
320
346
  # @see https://design-system.service.gov.uk/components/textarea/ GOV.UK text area component
@@ -340,8 +366,8 @@ module GOVUKDesignSystemFormBuilder
340
366
  # = f.govuk_text_area :instructions,
341
367
  # label: -> { tag.h3("How do you set it up?") }
342
368
  #
343
- def govuk_text_area(attribute_name, hint: {}, label: {}, caption: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, form_group: {}, **args, &block)
344
- Elements::TextArea.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, max_words: max_words, max_chars: max_chars, rows: rows, threshold: threshold, form_group: form_group, **args, &block).html
369
+ def govuk_text_area(attribute_name, hint: {}, label: {}, caption: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, form_group: {}, **kwargs, &block)
370
+ Elements::TextArea.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, max_words: max_words, max_chars: max_chars, rows: rows, threshold: threshold, form_group: form_group, **kwargs, &block).html
345
371
  end
346
372
 
347
373
  # Generates a +select+ element containing +option+ for each member in the provided collection
@@ -353,16 +379,17 @@ module GOVUKDesignSystemFormBuilder
353
379
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
354
380
  # supplied the hint will be wrapped in a +div+ instead of a +span+
355
381
  # @option hint text [String] the hint text
356
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
382
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
357
383
  # @option label text [String] the label text
358
384
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
359
385
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
360
386
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
387
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
361
388
  # @param options [Hash] Options hash passed through to Rails' +collection_select+ helper
362
389
  # @param html_options [Hash] HTML Options hash passed through to Rails' +collection_select+ helper
363
390
  # @param form_group [Hash] configures the form group
364
391
  # @option form_group classes [Array,String] sets the form group's classes
365
- # @option form_group args [Hash] additional attributes added to the form group
392
+ # @option form_group kwargs [Hash] additional attributes added to the form group
366
393
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
367
394
  # @see https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select Rails collection_select (called by govuk_collection_select)
368
395
  # @return [ActiveSupport::SafeBuffer] HTML output
@@ -424,19 +451,21 @@ module GOVUKDesignSystemFormBuilder
424
451
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
425
452
  # supplied the hint will be wrapped in a +div+ instead of a +span+
426
453
  # @option hint text [String] the hint text
427
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
428
- # @param legend [Hash,Proc] options for configuring the legend
454
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
455
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
429
456
  # @param inline [Boolean] controls whether the radio buttons are displayed inline or not
430
457
  # @param small [Boolean] controls whether small radio buttons are used instead of regular-sized ones
431
458
  # @param bold_labels [Boolean] controls whether the radio button labels are bold
432
459
  # @param classes [Array,String] Classes to add to the radio button container.
433
460
  # @option legend text [String] the fieldset legend's text content
434
461
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
435
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
462
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
436
463
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
464
+ # @option legend kwargs [Hash] additional arguments are applied as attributes on the +legend+ element
437
465
  # @param caption [Hash] configures or sets the caption content which is inserted above the legend
438
466
  # @option caption text [String] the caption text
439
467
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
468
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
440
469
  # @return [ActiveSupport::SafeBuffer] HTML output
441
470
  #
442
471
  # @example A collection of radio buttons for favourite colours, labels capitalised via a proc
@@ -471,7 +500,7 @@ module GOVUKDesignSystemFormBuilder
471
500
  # :name,
472
501
  # legend: -> { tag.h3('Which category do you belong to?') }
473
502
  #
474
- def govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method, hint_method = nil, hint: {}, legend: {}, caption: {}, inline: false, small: false, bold_labels: false, classes: nil, form_group: {}, &block)
503
+ def govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method = nil, hint_method = nil, hint: {}, legend: {}, caption: {}, inline: false, small: false, bold_labels: false, classes: nil, form_group: {}, &block)
475
504
  Elements::Radios::Collection.new(
476
505
  self,
477
506
  object_name,
@@ -503,20 +532,22 @@ module GOVUKDesignSystemFormBuilder
503
532
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
504
533
  # supplied the hint will be wrapped in a +div+ instead of a +span+
505
534
  # @option hint text [String] the hint text
506
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
507
- # @param legend [Hash,Proc] options for configuring the legend
535
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
536
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
508
537
  # @param inline [Boolean] controls whether the radio buttons are displayed inline or not
509
538
  # @param small [Boolean] controls whether small radio buttons are used instead of regular-sized ones
510
539
  # @option legend text [String] the fieldset legend's text content
511
540
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
512
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
541
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
513
542
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
543
+ # @option legend kwargs [Hash] additional arguments are applied as attributes on the +legend+ element
514
544
  # @param caption [Hash] configures or sets the caption content which is inserted above the legend
515
545
  # @option caption text [String] the caption text
516
546
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
547
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
517
548
  # @param form_group [Hash] configures the form group
518
549
  # @option form_group classes [Array,String] sets the form group's classes
519
- # @option form_group args [Hash] additional attributes added to the form group
550
+ # @option form_group kwargs [Hash] additional attributes added to the form group
520
551
  # @param block [Block] a block of HTML that will be used to populate the fieldset
521
552
  # @param classes [Array,String] Classes to add to the radio button container.
522
553
  # @see https://design-system.service.gov.uk/components/radios/ GOV.UK Radios
@@ -551,11 +582,13 @@ module GOVUKDesignSystemFormBuilder
551
582
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
552
583
  # supplied the hint will be wrapped in a +div+ instead of a +span+
553
584
  # @option hint text [String] the hint text
554
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
555
- # @option legend text [String] the fieldset legend's text content
556
- # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
557
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
558
- # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
585
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
586
+ # @param label [Hash,Proc] configures or sets the associated label content
587
+ # @option label text [String] the label text
588
+ # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
589
+ # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
590
+ # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
591
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
559
592
  # @see https://design-system.service.gov.uk/components/radios/ GOV.UK Radios
560
593
  # @see https://design-system.service.gov.uk/styles/typography/#headings-with-captions Headings with captions
561
594
  # @param block [Block] Any supplied HTML will be wrapped in a conditional
@@ -596,20 +629,21 @@ module GOVUKDesignSystemFormBuilder
596
629
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
597
630
  # supplied the hint will be wrapped in a +div+ instead of a +span+
598
631
  # @option hint text [String] the hint text
599
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
632
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
600
633
  # @param small [Boolean] controls whether small check boxes are used instead of regular-sized ones
601
634
  # @param classes [Array,String] Classes to add to the checkbox container.
602
- # @param legend [Hash,Proc] options for configuring the legend
635
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
603
636
  # @option legend text [String] the fieldset legend's text content
604
637
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
605
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
638
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
606
639
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
607
640
  # @param caption [Hash] configures or sets the caption content which is inserted above the legend
608
641
  # @option caption text [String] the caption text
609
642
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
643
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
610
644
  # @param form_group [Hash] configures the form group
611
645
  # @option form_group classes [Array,String] sets the form group's classes
612
- # @option form_group args [Hash] additional attributes added to the form group
646
+ # @option form_group kwargs [Hash] additional attributes added to the form group
613
647
  # @param block [Block] any HTML passed in will be injected into the fieldset, after the hint and before the checkboxes
614
648
  # @return [ActiveSupport::SafeBuffer] HTML output
615
649
  #
@@ -674,20 +708,24 @@ module GOVUKDesignSystemFormBuilder
674
708
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
675
709
  # supplied the hint will be wrapped in a +div+ instead of a +span+
676
710
  # @option hint text [String] the hint text
677
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
711
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
678
712
  # @param small [Boolean] controls whether small check boxes are used instead of regular-sized ones
679
- # @param legend [Hash,Proc] options for configuring the legend
713
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
680
714
  # @option legend text [String] the fieldset legend's text content
681
715
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
682
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
716
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
683
717
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
718
+ # @option legend kwargs [Hash] additional arguments are applied as attributes on the +legend+ element
684
719
  # @param caption [Hash] configures or sets the caption content which is inserted above the legend
685
720
  # @option caption text [String] the caption text
686
721
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
722
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
687
723
  # @param classes [Array,String] Classes to add to the checkbox container.
688
724
  # @param form_group [Hash] configures the form group
725
+ # @param multiple [Boolean] when true adds a +[]+ suffix the +name+ of the automatically-generated hidden field
726
+ # (ie. <code>project[invoice_attributes][]</code>). When false, no +[]+ suffix is added (ie. <code>project[accepted]</code>)
689
727
  # @option form_group classes [Array,String] sets the form group's classes
690
- # @option form_group args [Hash] additional attributes added to the form group
728
+ # @option form_group kwargs [Hash] additional attributes added to the form group
691
729
  # @param block [Block] a block of HTML that will be used to populate the fieldset
692
730
  # @return [ActiveSupport::SafeBuffer] HTML output
693
731
  #
@@ -701,7 +739,7 @@ module GOVUKDesignSystemFormBuilder
701
739
  # = f.govuk_check_box :desired_filling, :lemonade, label: { text: 'Lemonade' }, link_errors: true
702
740
  # = f.govuk_check_box :desired_filling, :fizzy_orange, label: { text: 'Fizzy orange' }
703
741
  #
704
- def govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, classes: nil, form_group: {}, &block)
742
+ def govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, classes: nil, form_group: {}, multiple: true, &block)
705
743
  Containers::CheckBoxesFieldset.new(
706
744
  self,
707
745
  object_name,
@@ -712,6 +750,7 @@ module GOVUKDesignSystemFormBuilder
712
750
  small: small,
713
751
  classes: classes,
714
752
  form_group: form_group,
753
+ multiple: multiple,
715
754
  &block
716
755
  ).html
717
756
  end
@@ -720,15 +759,17 @@ module GOVUKDesignSystemFormBuilder
720
759
  #
721
760
  # @param attribute_name [Symbol] The name of the attribute
722
761
  # @param value [Boolean,String,Symbol,Integer] The value of the checkbox when it is checked
762
+ # @param unchecked_value [Boolean,String,Symbol,Integer] The value of the checkbox when it is unchecked
723
763
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
724
764
  # supplied the hint will be wrapped in a +div+ instead of a +span+
725
765
  # @option hint text [String] the hint text
726
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
766
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
727
767
  # @param link_errors [Boolean] controls whether this radio button should be linked to from {#govuk_error_summary}
728
768
  # @option label text [String] the label text
729
769
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
730
770
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
731
771
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
772
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
732
773
  # @param multiple [Boolean] controls whether the check box is part of a collection or represents a single attribute
733
774
  # @param block [Block] any HTML passed in will form the contents of the fieldset
734
775
  # @return [ActiveSupport::SafeBuffer] HTML output
@@ -741,12 +782,13 @@ module GOVUKDesignSystemFormBuilder
741
782
  # label: { text: 'Do you agree with our terms and conditions?' },
742
783
  # hint: { text: 'You will not be able to proceed unless you do' }
743
784
  #
744
- def govuk_check_box(attribute_name, value, hint: {}, label: {}, link_errors: false, multiple: true, &block)
785
+ def govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, &block)
745
786
  Elements::CheckBoxes::FieldsetCheckBox.new(
746
787
  self,
747
788
  object_name,
748
789
  attribute_name,
749
790
  value,
791
+ unchecked_value,
750
792
  hint: hint,
751
793
  label: label,
752
794
  link_errors: link_errors,
@@ -774,6 +816,8 @@ module GOVUKDesignSystemFormBuilder
774
816
  # @return [ActiveSupport::SafeBuffer] HTML output
775
817
  # @note Only the first additional button or link (passed in via a block) will be given the
776
818
  # correct left margin, subsequent buttons will need to be manually accounted for
819
+ # @note This helper always renders an +<input type='submit'>+ tag, HTML content is not supported inside. You
820
+ # can place +<button>+ tags inside the form to have the same effect
777
821
  # @see https://design-system.service.gov.uk/components/button/#stop-users-from-accidentally-sending-information-more-than-once
778
822
  # GOV.UK double click prevention
779
823
  #
@@ -794,19 +838,21 @@ module GOVUKDesignSystemFormBuilder
794
838
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
795
839
  # supplied the hint will be wrapped in a +div+ instead of a +span+
796
840
  # @option hint text [String] the hint text
797
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
798
- # @param legend [Hash,Proc] options for configuring the legend
841
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
842
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
799
843
  # @option legend text [String] the fieldset legend's text content
800
844
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
801
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
845
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
802
846
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
847
+ # @option legend kwargs [Hash] additional arguments are applied as attributes on the +legend+ element
803
848
  # @param caption [Hash] configures or sets the caption content which is inserted above the legend
804
849
  # @option caption text [String] the caption text
805
850
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
851
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
806
852
  # @param omit_day [Boolean] do not render a day input, only capture month and year
807
853
  # @param form_group [Hash] configures the form group
808
854
  # @option form_group classes [Array,String] sets the form group's classes
809
- # @option form_group args [Hash] additional attributes added to the form group
855
+ # @option form_group kwargs [Hash] additional attributes added to the form group
810
856
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input group
811
857
  # @param date_of_birth [Boolean] if +true+ {https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values birth date auto completion attributes}
812
858
  # will be added to the inputs
@@ -835,6 +881,9 @@ module GOVUKDesignSystemFormBuilder
835
881
  #
836
882
  # @param title [String] the error summary heading
837
883
  #
884
+ # @note Only the first error in the +#errors+ array for each attribute will
885
+ # be included.
886
+ #
838
887
  # @example An error summary with a custom title
839
888
  # = f.govuk_error_summary 'Uh-oh, spaghettios'
840
889
  #
@@ -845,24 +894,26 @@ module GOVUKDesignSystemFormBuilder
845
894
 
846
895
  # Generates a fieldset containing the contents of the block
847
896
  #
848
- # @param legend [Hash,Proc] options for configuring the legend
897
+ # @param legend [NilClass,Hash,Proc] options for configuring the legend. Legend will be omitted if +nil+.
849
898
  # @param described_by [Array<String>] the ids of the elements that describe this fieldset, usually hints and errors
850
899
  # @option legend text [String] the fieldset legend's text content
851
900
  # @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
852
- # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
901
+ # @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+.
853
902
  # @option legend hidden [Boolean] control the visibility of the legend. Hidden legends will still be read by screenreaders
903
+ # @option legend kwargs [Hash] additional arguments are applied as attributes on the +legend+ element
854
904
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
855
905
  # @option caption text [String] the caption text
856
906
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
907
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
857
908
  #
858
909
  # @example A fieldset containing address fields
859
- # = f.govuk_fieldset legend: { text: 'Address' }
910
+ # = f.govuk_fieldset legend: { text: 'Address' } do
860
911
  # = f.govuk_text_field :street
861
912
  # = f.govuk_text_field :town
862
913
  # = f.govuk_text_field :city
863
914
  #
864
915
  # @example A fieldset with the legend as a proc
865
- # = f.govuk_fieldset legend: -> { tag.h3('Skills') }
916
+ # = f.govuk_fieldset legend: -> { tag.h3('Skills') } do
866
917
  # = f.govuk_text_area :physical
867
918
  # = f.govuk_text_area :mental
868
919
  #
@@ -880,17 +931,19 @@ module GOVUKDesignSystemFormBuilder
880
931
  # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
881
932
  # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
882
933
  # @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
934
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
883
935
  # @param caption [Hash] configures or sets the caption content which is inserted above the label
884
936
  # @option caption text [String] the caption text
885
937
  # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
938
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
886
939
  # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
887
940
  # supplied the hint will be wrapped in a +div+ instead of a +span+
888
941
  # @option hint text [String] the hint text
889
- # @option hint args [Hash] additional arguments are applied as attributes to the hint
890
- # @option args [Hash] args additional arguments are applied as attributes to the +input+ element
942
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
943
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
891
944
  # @param form_group [Hash] configures the form group
892
945
  # @option form_group classes [Array,String] sets the form group's classes
893
- # @option form_group args [Hash] additional attributes added to the form group
946
+ # @option form_group kwargs [Hash] additional attributes added to the form group
894
947
  # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
895
948
  #
896
949
  # @example A photo upload field with file type specifier and injected content
@@ -909,8 +962,8 @@ module GOVUKDesignSystemFormBuilder
909
962
  # @note Remember to set +multipart: true+ when creating a form with file
910
963
  # uploads, {https://guides.rubyonrails.org/form_helpers.html#uploading-files see
911
964
  # the Rails documentation} for more information
912
- def govuk_file_field(attribute_name, label: {}, caption: {}, hint: {}, form_group: {}, **args, &block)
913
- Elements::File.new(self, object_name, attribute_name, label: label, caption: caption, hint: hint, form_group: form_group, **args, &block).html
965
+ def govuk_file_field(attribute_name, label: {}, caption: {}, hint: {}, form_group: {}, **kwargs, &block)
966
+ Elements::File.new(self, object_name, attribute_name, label: label, caption: caption, hint: hint, form_group: form_group, **kwargs, &block).html
914
967
  end
915
968
  end
916
969
  end
@@ -4,7 +4,7 @@ module GOVUKDesignSystemFormBuilder
4
4
  include Traits::Error
5
5
  include Traits::Hint
6
6
 
7
- def initialize(builder, object_name, attribute_name, hint:, legend:, caption:, small:, classes:, form_group:, &block)
7
+ def initialize(builder, object_name, attribute_name, hint:, legend:, caption:, small:, classes:, form_group:, multiple:, &block)
8
8
  super(builder, object_name, attribute_name, &block)
9
9
 
10
10
  @legend = legend
@@ -13,19 +13,30 @@ module GOVUKDesignSystemFormBuilder
13
13
  @small = small
14
14
  @classes = classes
15
15
  @form_group = form_group
16
+ @multiple = multiple
16
17
  @block_content = capture { block.call }
17
18
  end
18
19
 
19
20
  def html
20
21
  Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
21
22
  Containers::Fieldset.new(@builder, @object_name, @attribute_name, **fieldset_options).html do
22
- safe_join([hint_element, error_element, checkboxes])
23
+ safe_join([hint_element, error_element, hidden_field, checkboxes])
23
24
  end
24
25
  end
25
26
  end
26
27
 
27
28
  private
28
29
 
30
+ def hidden_field
31
+ return unless @multiple
32
+
33
+ @builder.hidden_field(@attribute_name, value: "", name: hidden_field_name)
34
+ end
35
+
36
+ def hidden_field_name
37
+ format("%<object_name>s[%<attribute_name>s][]", object_name: @object_name, attribute_name: @attribute_name)
38
+ end
39
+
29
40
  def fieldset_options
30
41
  {
31
42
  legend: @legend,
@@ -4,12 +4,12 @@ module GOVUKDesignSystemFormBuilder
4
4
  def initialize(builder, object_name, attribute_name, classes: nil, **kwargs)
5
5
  super(builder, object_name, attribute_name)
6
6
 
7
- @classes = classes
8
- @extra_options = kwargs
7
+ @classes = classes
8
+ @html_attributes = kwargs
9
9
  end
10
10
 
11
11
  def html
12
- tag.div(class: classes, **@extra_options) { yield }
12
+ tag.div(class: classes, **@html_attributes) { yield }
13
13
  end
14
14
 
15
15
  private
@@ -3,21 +3,26 @@ module GOVUKDesignSystemFormBuilder
3
3
  class Caption < Base
4
4
  include Traits::Localisation
5
5
 
6
- def initialize(builder, object_name, attribute_name, text:, size: nil)
6
+ def initialize(builder, object_name, attribute_name, text: nil, size: nil, **kwargs)
7
7
  super(builder, object_name, attribute_name)
8
8
 
9
- @text = text(text)
10
- @size_class = size_class(size)
9
+ @text = text(text)
10
+ @size_class = size_class(size)
11
+ @html_attributes = kwargs
11
12
  end
12
13
 
13
14
  def html
14
- return nil if @text.blank?
15
+ return nil unless active?
15
16
 
16
- tag.span(@text, class: @size_class)
17
+ tag.span(@text, class: @size_class, **@html_attributes)
17
18
  end
18
19
 
19
20
  private
20
21
 
22
+ def active?
23
+ @text.present?
24
+ end
25
+
21
26
  def text(override)
22
27
  override || localised_text(:caption)
23
28
  end
@@ -8,14 +8,15 @@ module GOVUKDesignSystemFormBuilder
8
8
  include Traits::Hint
9
9
  include Traits::Conditional
10
10
 
11
- def initialize(builder, object_name, attribute_name, value, label:, hint:, link_errors:, multiple:, &block)
11
+ def initialize(builder, object_name, attribute_name, value, unchecked_value, label:, hint:, link_errors:, multiple:, &block)
12
12
  super(builder, object_name, attribute_name)
13
13
 
14
- @value = value
15
- @label = label
16
- @hint = hint
17
- @multiple = multiple
18
- @link_errors = link_errors
14
+ @value = value
15
+ @unchecked_value = unchecked_value
16
+ @label = label
17
+ @hint = hint
18
+ @multiple = multiple
19
+ @link_errors = link_errors
19
20
 
20
21
  if block_given?
21
22
  @conditional_content = wrap_conditional(block)
@@ -36,7 +37,7 @@ module GOVUKDesignSystemFormBuilder
36
37
  end
37
38
 
38
39
  def check_box
39
- @builder.check_box(@attribute_name, options, @value, false)
40
+ @builder.check_box(@attribute_name, options, @value, @unchecked_value)
40
41
  end
41
42
 
42
43
  def options
@@ -11,11 +11,11 @@ module GOVUKDesignSystemFormBuilder
11
11
  def initialize(builder, object_name, attribute_name, hint:, label:, caption:, form_group:, **kwargs, &block)
12
12
  super(builder, object_name, attribute_name, &block)
13
13
 
14
- @label = label
15
- @caption = caption
16
- @hint = hint
17
- @extra_options = kwargs
18
- @form_group = form_group
14
+ @label = label
15
+ @caption = caption
16
+ @hint = hint
17
+ @html_attributes = kwargs
18
+ @form_group = form_group
19
19
  end
20
20
 
21
21
  def html
@@ -27,7 +27,7 @@ module GOVUKDesignSystemFormBuilder
27
27
  private
28
28
 
29
29
  def file
30
- @builder.file_field(@attribute_name, **options, **@extra_options)
30
+ @builder.file_field(@attribute_name, **options, **@html_attributes)
31
31
  end
32
32
 
33
33
  def options
@@ -8,20 +8,20 @@ module GOVUKDesignSystemFormBuilder
8
8
  def initialize(builder, object_name, attribute_name, value: nil, text: nil, content: nil, radio: false, checkbox: false, **kwargs)
9
9
  super(builder, object_name, attribute_name)
10
10
 
11
+ @value = value
11
12
  @radio = radio
12
13
  @checkbox = checkbox
13
14
  @html_attributes = kwargs
14
15
 
15
16
  if content
16
- @content = capture { content.call }
17
+ @raw = capture { content.call }
17
18
  else
18
- @text = retrieve_text(text)
19
- @value = value
19
+ @text = retrieve_text(text)
20
20
  end
21
21
  end
22
22
 
23
23
  def active?
24
- [@text, @content].any?(&:present?)
24
+ [@text, @raw].any?(&:present?)
25
25
  end
26
26
 
27
27
  def html
@@ -43,11 +43,11 @@ module GOVUKDesignSystemFormBuilder
43
43
  end
44
44
 
45
45
  def hint_tag
46
- @content.presence ? 'div' : 'span'
46
+ @raw.presence ? 'div' : 'span'
47
47
  end
48
48
 
49
49
  def hint_body
50
- @content || @text
50
+ @raw || @text
51
51
  end
52
52
 
53
53
  def retrieve_text(supplied)
@@ -6,22 +6,24 @@ module GOVUKDesignSystemFormBuilder
6
6
  include Traits::Caption
7
7
  include Traits::Localisation
8
8
 
9
- def initialize(builder, object_name, attribute_name, text: nil, value: nil, size: nil, hidden: false, radio: false, checkbox: false, tag: nil, link_errors: true, content: nil, caption: nil)
9
+ def initialize(builder, object_name, attribute_name, text: nil, value: nil, size: nil, hidden: false, radio: false, checkbox: false, tag: nil, link_errors: true, content: nil, caption: nil, **kwargs)
10
10
  super(builder, object_name, attribute_name)
11
11
 
12
+ @value = value # used by field_id
13
+ @tag = tag
14
+ @radio = radio
15
+ @checkbox = checkbox
16
+ @link_errors = link_errors
17
+ @html_attributes = kwargs
18
+
12
19
  # content is passed in directly via a proc and overrides
13
20
  # the other display options
14
21
  if content
15
22
  @content = capture { content.call }
16
23
  else
17
- @value = value # used by field_id
18
- @text = retrieve_text(text, hidden)
19
- @size_class = size_class(size)
20
- @radio = radio
21
- @checkbox = checkbox
22
- @tag = tag
23
- @link_errors = link_errors
24
- @caption = caption
24
+ @text = retrieve_text(text, hidden)
25
+ @size_class = size_class(size)
26
+ @caption = caption
25
27
  end
26
28
  end
27
29
 
@@ -42,7 +44,7 @@ module GOVUKDesignSystemFormBuilder
42
44
  private
43
45
 
44
46
  def label
45
- @builder.label(@attribute_name, **options) do
47
+ @builder.label(@attribute_name, **options, **@html_attributes) do
46
48
  @content || safe_join([caption, @text])
47
49
  end
48
50
  end
@@ -4,22 +4,26 @@ module GOVUKDesignSystemFormBuilder
4
4
  include Traits::Caption
5
5
  include Traits::Localisation
6
6
 
7
- def initialize(builder, object_name, attribute_name, legend:, caption:)
7
+ def initialize(builder, object_name, attribute_name, legend:, caption:, **kwargs)
8
8
  super(builder, object_name, attribute_name)
9
9
 
10
+ @html_attributes = kwargs
11
+
10
12
  case legend
13
+ when NilClass
14
+ # do nothing
11
15
  when Proc
12
16
  @raw = capture { legend.call }
13
17
  when Hash
14
18
  defaults.merge(legend).tap do |l|
15
- @text = text(l.dig(:text))
19
+ @text = retrieve_text(l.dig(:text))
16
20
  @hidden = l.dig(:hidden)
17
21
  @tag = l.dig(:tag)
18
22
  @size = l.dig(:size)
19
23
  @caption = caption
20
24
  end
21
25
  else
22
- fail(ArgumentError, %(legend must be a Proc or Hash))
26
+ fail(ArgumentError, %(legend must be a NilClass, Proc or Hash))
23
27
  end
24
28
  end
25
29
 
@@ -29,18 +33,28 @@ module GOVUKDesignSystemFormBuilder
29
33
 
30
34
  private
31
35
 
36
+ def active?
37
+ [@text, @raw].any?(&:present?)
38
+ end
39
+
32
40
  def content
33
- if @text.present?
34
- tag.legend(class: classes) do
35
- content_tag(@tag, class: heading_classes) do
36
- safe_join([caption_element, @text])
37
- end
38
- end
41
+ return unless active?
42
+
43
+ tag.legend(legend_text, class: classes, **@html_attributes)
44
+ end
45
+
46
+ def legend_text
47
+ caption_and_text = safe_join([caption_element, @text])
48
+
49
+ if @tag.present?
50
+ content_tag(@tag, class: heading_classes) { caption_and_text }
51
+ else
52
+ caption_and_text
39
53
  end
40
54
  end
41
55
 
42
- def text(supplied_text)
43
- supplied_text || localised_text(:legend)
56
+ def retrieve_text(supplied_text)
57
+ [supplied_text, localised_text(:legend), @attribute_name&.capitalize].compact.first
44
58
  end
45
59
 
46
60
  def classes
@@ -39,7 +39,7 @@ module GOVUKDesignSystemFormBuilder
39
39
  end
40
40
 
41
41
  def label_element
42
- @label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, **label_content, **label_options, **@label)
42
+ @label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, **label_content, **label_options)
43
43
  end
44
44
 
45
45
  def label_options
@@ -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
@@ -1,38 +1,58 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
2
  module Traits
3
3
  module Input
4
- def initialize(builder, object_name, attribute_name, hint:, label:, caption:, width:, form_group:, **kwargs, &block)
4
+ def initialize(builder, object_name, attribute_name, hint:, label:, caption:, prefix_text:, suffix_text:, 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
10
  @hint = hint
11
+ @prefix_text = prefix_text
12
+ @suffix_text = suffix_text
11
13
  @html_attributes = kwargs
12
14
  @form_group = form_group
13
15
  end
14
16
 
15
17
  def html
16
18
  Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
17
- safe_join([label_element, supplemental_content, hint_element, error_element, input])
19
+ safe_join([label_element, supplemental_content, hint_element, error_element, content])
18
20
  end
19
21
  end
20
22
 
21
23
  private
22
24
 
25
+ def content
26
+ if affixed?
27
+ affixed_input
28
+ else
29
+ input
30
+ end
31
+ end
32
+
33
+ def affixed_input
34
+ content_tag('div', class: %(#{brand}-input__wrapper)) do
35
+ safe_join([prefix, input, suffix])
36
+ end
37
+ end
38
+
23
39
  def input
24
- @builder.send(builder_method, @attribute_name, **input_options, **@html_attributes)
40
+ @builder.send(builder_method, @attribute_name, **options, **@html_attributes)
41
+ end
42
+
43
+ def affixed?
44
+ [@prefix_text, @suffix_text].any?
25
45
  end
26
46
 
27
- def input_options
47
+ def options
28
48
  {
29
49
  id: field_id(link_errors: true),
30
- class: input_classes,
50
+ class: classes,
31
51
  aria: { describedby: described_by(hint_id, error_id, supplemental_id) }
32
52
  }
33
53
  end
34
54
 
35
- def input_classes
55
+ def classes
36
56
  [%(#{brand}-input)].push(width_classes, error_classes).compact
37
57
  end
38
58
 
@@ -64,6 +84,22 @@ module GOVUKDesignSystemFormBuilder
64
84
  else fail(ArgumentError, "invalid width '#{@width}'")
65
85
  end
66
86
  end
87
+
88
+ def prefix
89
+ return nil if @prefix_text.blank?
90
+
91
+ tag.span(@prefix_text, class: %(#{brand}-input__prefix), **affix_options)
92
+ end
93
+
94
+ def suffix
95
+ return nil if @suffix_text.blank?
96
+
97
+ tag.span(@suffix_text, class: %(#{brand}-input__suffix), **affix_options)
98
+ end
99
+
100
+ def affix_options
101
+ { aria: { hidden: true } }
102
+ end
67
103
  end
68
104
  end
69
105
  end
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '2.0.0b1'.freeze
2
+ VERSION = '2.1.0'.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: 2.0.0b1
4
+ version: 2.1.0
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-08-27 00:00:00.000000000 Z
11
+ date: 2020-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -134,14 +134,14 @@ dependencies:
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 0.18.5
137
+ version: 0.17.1
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: 0.18.5
144
+ version: 0.17.1
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: htmlbeautifier
147
147
  requirement: !ruby/object:Gem::Requirement
@@ -176,14 +176,14 @@ dependencies:
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 3.21.0
179
+ version: 3.23.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.21.0
186
+ version: 3.23.0
187
187
  - !ruby/object:Gem::Dependency
188
188
  name: rubypants
189
189
  requirement: !ruby/object:Gem::Requirement
@@ -303,7 +303,7 @@ metadata:
303
303
  documentation_uri: https://www.rubydoc.info/gems/govuk_design_system_formbuilder/GOVUKDesignSystemFormBuilder/Builder
304
304
  homepage_uri: https://govuk-form-builder.netlify.app
305
305
  source_code_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder
306
- post_install_message:
306
+ post_install_message:
307
307
  rdoc_options: []
308
308
  require_paths:
309
309
  - lib
@@ -314,12 +314,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
314
  version: '0'
315
315
  required_rubygems_version: !ruby/object:Gem::Requirement
316
316
  requirements:
317
- - - ">"
317
+ - - ">="
318
318
  - !ruby/object:Gem::Version
319
- version: 1.3.1
319
+ version: '0'
320
320
  requirements: []
321
321
  rubygems_version: 3.1.2
322
- signing_key:
322
+ signing_key:
323
323
  specification_version: 4
324
324
  summary: GOV.UK-compliant Rails form builder
325
325
  test_files: []