govuk_design_system_formbuilder 1.2.9 → 2.0.0b1
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 +4 -4
- data/lib/govuk_design_system_formbuilder/builder.rb +148 -75
- data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +9 -9
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +4 -3
- data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +10 -10
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +12 -12
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +6 -2
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +12 -9
- data/lib/govuk_design_system_formbuilder/elements/date.rb +8 -8
- data/lib/govuk_design_system_formbuilder/elements/file.rb +7 -7
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +35 -8
- data/lib/govuk_design_system_formbuilder/elements/label.rb +5 -1
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +14 -14
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +9 -1
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +13 -5
- data/lib/govuk_design_system_formbuilder/elements/select.rb +11 -11
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +11 -11
- data/lib/govuk_design_system_formbuilder/traits/hint.rb +15 -2
- data/lib/govuk_design_system_formbuilder/traits/input.rb +8 -8
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52cc4abc62b3ac208e8fe2befb527b6deda60868d2094a3172d907bc0ce82654
|
4
|
+
data.tar.gz: fb0c810a65f025e226fe4dc0cee0c5b42b3b7baa499b032d6f88d4ec2fac9d54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 996a9f979a4eab0a16499f81cf39fdcfbd0c641dd5d2944c52be697cd6f1f8870b75c6fd4b498d3769265fa39168f7baefe36bb53255bc50a9bfcb82f06bd641
|
7
|
+
data.tar.gz: ef2f8f3eaba7ea21b2ae18a7a4ba8c181981164f36917d082ff5f2545896df17c6b27c9acab09621d3e5453013d9e5747e5f838b54bc2f2e68aed585980190d9
|
@@ -5,7 +5,11 @@ module GOVUKDesignSystemFormBuilder
|
|
5
5
|
# Generates a input of type +text+
|
6
6
|
#
|
7
7
|
# @param attribute_name [Symbol] The name of the attribute
|
8
|
-
# @param
|
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
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
10
|
+
# @option hint text [String] the hint text
|
11
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
12
|
+
#
|
9
13
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
10
14
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
11
15
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -17,7 +21,9 @@ module GOVUKDesignSystemFormBuilder
|
|
17
21
|
# @option caption text [String] the caption text
|
18
22
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
19
23
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
20
|
-
# @param
|
24
|
+
# @param form_group [Hash] configures the form group
|
25
|
+
# @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
|
21
27
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
22
28
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
23
29
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -26,7 +32,7 @@ module GOVUKDesignSystemFormBuilder
|
|
26
32
|
# @example A required full name field with a placeholder
|
27
33
|
# = f.govuk_text_field :name,
|
28
34
|
# label: { text: 'Full name' },
|
29
|
-
#
|
35
|
+
# hint: { text: 'It says it on your birth certificate' },
|
30
36
|
# required: true,
|
31
37
|
# placeholder: 'Ralph Wiggum'
|
32
38
|
#
|
@@ -41,14 +47,17 @@ module GOVUKDesignSystemFormBuilder
|
|
41
47
|
# = f.govuk_text_field :callsign,
|
42
48
|
# label: -> { tag.h3('Call-sign') }
|
43
49
|
#
|
44
|
-
def govuk_text_field(attribute_name,
|
45
|
-
Elements::Inputs::Text.new(self, object_name, attribute_name,
|
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
|
46
52
|
end
|
47
53
|
|
48
54
|
# Generates a input of type +tel+
|
49
55
|
#
|
50
56
|
# @param attribute_name [Symbol] The name of the attribute
|
51
|
-
# @param
|
57
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
58
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
59
|
+
# @option hint text [String] the hint text
|
60
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
52
61
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
53
62
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
54
63
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -60,7 +69,9 @@ module GOVUKDesignSystemFormBuilder
|
|
60
69
|
# @option caption text [String] the caption text
|
61
70
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
62
71
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
63
|
-
# @param
|
72
|
+
# @param form_group [Hash] configures the form group
|
73
|
+
# @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
|
64
75
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
65
76
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
66
77
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -70,7 +81,7 @@ module GOVUKDesignSystemFormBuilder
|
|
70
81
|
# @example A required phone number field with a placeholder
|
71
82
|
# = f.govuk_phone_field :phone_number,
|
72
83
|
# label: { text: 'UK telephone number' },
|
73
|
-
#
|
84
|
+
# hint: { text: 'Include the dialling code' },
|
74
85
|
# required: true,
|
75
86
|
# placeholder: '0123 456 789'
|
76
87
|
#
|
@@ -85,14 +96,17 @@ module GOVUKDesignSystemFormBuilder
|
|
85
96
|
# = f.govuk_phone_field :work_number,
|
86
97
|
# label: -> { tag.h3('Work number') }
|
87
98
|
#
|
88
|
-
def govuk_phone_field(attribute_name,
|
89
|
-
Elements::Inputs::Phone.new(self, object_name, attribute_name,
|
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
|
90
101
|
end
|
91
102
|
|
92
103
|
# Generates a input of type +email+
|
93
104
|
#
|
94
105
|
# @param attribute_name [Symbol] The name of the attribute
|
95
|
-
# @param
|
106
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
107
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
108
|
+
# @option hint text [String] the hint text
|
109
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
96
110
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
97
111
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
98
112
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -104,7 +118,9 @@ module GOVUKDesignSystemFormBuilder
|
|
104
118
|
# @option caption text [String] the caption text
|
105
119
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
106
120
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
107
|
-
# @param
|
121
|
+
# @param form_group [Hash] configures the form group
|
122
|
+
# @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
|
108
124
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
109
125
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
110
126
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -127,14 +143,17 @@ module GOVUKDesignSystemFormBuilder
|
|
127
143
|
# = f.govuk_email_field :personal_email,
|
128
144
|
# label: -> { tag.h3('Personal email address') }
|
129
145
|
#
|
130
|
-
def govuk_email_field(attribute_name,
|
131
|
-
Elements::Inputs::Email.new(self, object_name, attribute_name,
|
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
|
132
148
|
end
|
133
149
|
|
134
150
|
# Generates a input of type +password+
|
135
151
|
#
|
136
152
|
# @param attribute_name [Symbol] The name of the attribute
|
137
|
-
# @param
|
153
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
154
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
155
|
+
# @option hint text [String] the hint text
|
156
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
138
157
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
139
158
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
140
159
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -146,7 +165,9 @@ module GOVUKDesignSystemFormBuilder
|
|
146
165
|
# @option caption text [String] the caption text
|
147
166
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
148
167
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
149
|
-
# @param
|
168
|
+
# @param form_group [Hash] configures the form group
|
169
|
+
# @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
|
150
171
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
151
172
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
152
173
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -168,14 +189,17 @@ module GOVUKDesignSystemFormBuilder
|
|
168
189
|
# = f.govuk_password_field :passcode,
|
169
190
|
# label: -> { tag.h3('What is your secret pass code?') }
|
170
191
|
#
|
171
|
-
def govuk_password_field(attribute_name,
|
172
|
-
Elements::Inputs::Password.new(self, object_name, attribute_name,
|
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
|
173
194
|
end
|
174
195
|
|
175
196
|
# Generates a input of type +url+
|
176
197
|
#
|
177
198
|
# @param attribute_name [Symbol] The name of the attribute
|
178
|
-
# @param
|
199
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
200
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
201
|
+
# @option hint text [String] the hint text
|
202
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
179
203
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
180
204
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
181
205
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -187,7 +211,9 @@ module GOVUKDesignSystemFormBuilder
|
|
187
211
|
# @option caption text [String] the caption text
|
188
212
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
189
213
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
190
|
-
# @param
|
214
|
+
# @param form_group [Hash] configures the form group
|
215
|
+
# @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
|
191
217
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
192
218
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
193
219
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -210,14 +236,17 @@ module GOVUKDesignSystemFormBuilder
|
|
210
236
|
# = f.govuk_url_field :work_website,
|
211
237
|
# label: -> { tag.h3("Enter your company's website") }
|
212
238
|
#
|
213
|
-
def govuk_url_field(attribute_name,
|
214
|
-
Elements::Inputs::URL.new(self, object_name, attribute_name,
|
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
|
215
241
|
end
|
216
242
|
|
217
243
|
# Generates a input of type +number+
|
218
244
|
#
|
219
245
|
# @param attribute_name [Symbol] The name of the attribute
|
220
|
-
# @param
|
246
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
247
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
248
|
+
# @option hint text [String] the hint text
|
249
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
221
250
|
# @param width [Integer,String] sets the width of the input, can be +2+, +3+ +4+, +5+, +10+ or +20+ characters
|
222
251
|
# or +one-quarter+, +one-third+, +one-half+, +two-thirds+ or +full+ width of the container
|
223
252
|
# @param label [Hash,Proc] configures or sets the associated label content
|
@@ -229,7 +258,9 @@ module GOVUKDesignSystemFormBuilder
|
|
229
258
|
# @option caption text [String] the caption text
|
230
259
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
231
260
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
232
|
-
# @param
|
261
|
+
# @param form_group [Hash] configures the form group
|
262
|
+
# @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
|
233
264
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
234
265
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
235
266
|
# @see https://design-system.service.gov.uk/components/text-input/ GOV.UK Text input
|
@@ -255,8 +286,8 @@ module GOVUKDesignSystemFormBuilder
|
|
255
286
|
# = f.govuk_url_field :personal_best_over_100m,
|
256
287
|
# label: -> { tag.h3("How many seconds does it take you to run 100m?") }
|
257
288
|
#
|
258
|
-
def govuk_number_field(attribute_name,
|
259
|
-
Elements::Inputs::Number.new(self, object_name, attribute_name,
|
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
|
260
291
|
end
|
261
292
|
|
262
293
|
# Generates a +textarea+ element with a label, optional hint. Also offers
|
@@ -264,7 +295,10 @@ module GOVUKDesignSystemFormBuilder
|
|
264
295
|
# automatically
|
265
296
|
#
|
266
297
|
# @param attribute_name [Symbol] The name of the attribute
|
267
|
-
# @param
|
298
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
299
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
300
|
+
# @option hint text [String] the hint text
|
301
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
268
302
|
# @param label [Hash,Proc] configures or sets the associated label content
|
269
303
|
# @option label text [String] the label text
|
270
304
|
# @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
|
@@ -278,7 +312,9 @@ module GOVUKDesignSystemFormBuilder
|
|
278
312
|
# @param threshold [Integer] only show the +max_words+ and +max_chars+ warnings once a threshold (percentage) is reached
|
279
313
|
# @param rows [Integer] sets the initial number of rows
|
280
314
|
# @option args [Hash] args additional arguments are applied as attributes to the +textarea+ element
|
281
|
-
# @param
|
315
|
+
# @param form_group [Hash] configures the form group
|
316
|
+
# @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
|
282
318
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
283
319
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
284
320
|
# @see https://design-system.service.gov.uk/components/textarea/ GOV.UK text area component
|
@@ -304,8 +340,8 @@ module GOVUKDesignSystemFormBuilder
|
|
304
340
|
# = f.govuk_text_area :instructions,
|
305
341
|
# label: -> { tag.h3("How do you set it up?") }
|
306
342
|
#
|
307
|
-
def govuk_text_area(attribute_name,
|
308
|
-
Elements::TextArea.new(self, object_name, attribute_name,
|
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
|
309
345
|
end
|
310
346
|
|
311
347
|
# Generates a +select+ element containing +option+ for each member in the provided collection
|
@@ -314,14 +350,19 @@ module GOVUKDesignSystemFormBuilder
|
|
314
350
|
# @param collection [Enumerable<Object>] Options to be added to the +select+ element
|
315
351
|
# @param value_method [Symbol] The method called against each member of the collection to provide the value
|
316
352
|
# @param text_method [Symbol] The method called against each member of the collection to provide the text
|
317
|
-
# @param
|
353
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
354
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
355
|
+
# @option hint text [String] the hint text
|
356
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
318
357
|
# @option label text [String] the label text
|
319
358
|
# @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
|
320
359
|
# @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
|
321
360
|
# @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
|
322
361
|
# @param options [Hash] Options hash passed through to Rails' +collection_select+ helper
|
323
362
|
# @param html_options [Hash] HTML Options hash passed through to Rails' +collection_select+ helper
|
324
|
-
# @param
|
363
|
+
# @param form_group [Hash] configures the form group
|
364
|
+
# @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
|
325
366
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
326
367
|
# @see https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select Rails collection_select (called by govuk_collection_select)
|
327
368
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
@@ -331,7 +372,7 @@ module GOVUKDesignSystemFormBuilder
|
|
331
372
|
# @grades,
|
332
373
|
# :id,
|
333
374
|
# :name,
|
334
|
-
#
|
375
|
+
# hint: { text: "If you took the test more than once enter your highest grade" }
|
335
376
|
#
|
336
377
|
# @example A select box with injected content
|
337
378
|
# = f.govuk_collection_select(:favourite_colour, @colours, :id, :name) do
|
@@ -343,7 +384,7 @@ module GOVUKDesignSystemFormBuilder
|
|
343
384
|
# = f.govuk_collection_select(:team, @teams, :id, :name) do
|
344
385
|
# label: -> { tag.h3("Which team did you represent?") }
|
345
386
|
#
|
346
|
-
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, html_options: {},
|
387
|
+
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, html_options: {}, hint: {}, label: {}, caption: {}, form_group: {}, &block)
|
347
388
|
Elements::Select.new(
|
348
389
|
self,
|
349
390
|
object_name,
|
@@ -351,12 +392,12 @@ module GOVUKDesignSystemFormBuilder
|
|
351
392
|
collection,
|
352
393
|
value_method: value_method,
|
353
394
|
text_method: text_method,
|
354
|
-
|
395
|
+
hint: hint,
|
355
396
|
label: label,
|
356
397
|
caption: caption,
|
357
398
|
options: options,
|
358
399
|
html_options: html_options,
|
359
|
-
|
400
|
+
form_group: form_group,
|
360
401
|
&block
|
361
402
|
).html
|
362
403
|
end
|
@@ -380,7 +421,10 @@ module GOVUKDesignSystemFormBuilder
|
|
380
421
|
# @param hint_method [Symbol, Proc, nil] The method called against each member of the collection to provide the hint text.
|
381
422
|
# When a +Proc+ is provided it must take a single argument that is a single member of the collection.
|
382
423
|
# When a +nil+ value is provided the hint text will be retrieved from the locale. This is the default and param can be omitted.
|
383
|
-
# @param
|
424
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
425
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
426
|
+
# @option hint text [String] the hint text
|
427
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
384
428
|
# @param legend [Hash,Proc] options for configuring the legend
|
385
429
|
# @param inline [Boolean] controls whether the radio buttons are displayed inline or not
|
386
430
|
# @param small [Boolean] controls whether small radio buttons are used instead of regular-sized ones
|
@@ -408,7 +452,7 @@ module GOVUKDesignSystemFormBuilder
|
|
408
452
|
# ->(option) { option.name.upcase },
|
409
453
|
# :description,
|
410
454
|
# legend: { text: 'Pick your favourite colour', size: 'm' },
|
411
|
-
#
|
455
|
+
# hint: { text: 'If you cannot find the exact match choose something close' },
|
412
456
|
# inline: false
|
413
457
|
#
|
414
458
|
# @example A collection of radio buttons for grades with injected content
|
@@ -427,7 +471,7 @@ module GOVUKDesignSystemFormBuilder
|
|
427
471
|
# :name,
|
428
472
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
429
473
|
#
|
430
|
-
def govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method, hint_method = nil,
|
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)
|
431
475
|
Elements::Radios::Collection.new(
|
432
476
|
self,
|
433
477
|
object_name,
|
@@ -436,14 +480,14 @@ module GOVUKDesignSystemFormBuilder
|
|
436
480
|
value_method: value_method,
|
437
481
|
text_method: text_method,
|
438
482
|
hint_method: hint_method,
|
439
|
-
|
483
|
+
hint: hint,
|
440
484
|
legend: legend,
|
441
485
|
caption: caption,
|
442
486
|
inline: inline,
|
443
487
|
small: small,
|
444
488
|
bold_labels: bold_labels,
|
445
489
|
classes: classes,
|
446
|
-
|
490
|
+
form_group: form_group,
|
447
491
|
&block
|
448
492
|
).html
|
449
493
|
end
|
@@ -456,7 +500,10 @@ module GOVUKDesignSystemFormBuilder
|
|
456
500
|
# is set to +link_errors: true+
|
457
501
|
#
|
458
502
|
# @param attribute_name [Symbol] The name of the attribute
|
459
|
-
# @param
|
503
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
504
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
505
|
+
# @option hint text [String] the hint text
|
506
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
460
507
|
# @param legend [Hash,Proc] options for configuring the legend
|
461
508
|
# @param inline [Boolean] controls whether the radio buttons are displayed inline or not
|
462
509
|
# @param small [Boolean] controls whether small radio buttons are used instead of regular-sized ones
|
@@ -467,7 +514,9 @@ module GOVUKDesignSystemFormBuilder
|
|
467
514
|
# @param caption [Hash] configures or sets the caption content which is inserted above the legend
|
468
515
|
# @option caption text [String] the caption text
|
469
516
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
470
|
-
# @param
|
517
|
+
# @param form_group [Hash] configures the form group
|
518
|
+
# @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
|
471
520
|
# @param block [Block] a block of HTML that will be used to populate the fieldset
|
472
521
|
# @param classes [Array,String] Classes to add to the radio button container.
|
473
522
|
# @see https://design-system.service.gov.uk/components/radios/ GOV.UK Radios
|
@@ -491,15 +540,18 @@ module GOVUKDesignSystemFormBuilder
|
|
491
540
|
# = f.govuk_radio_button :burger_id, :regular, label: { text: 'Hamburger' }, link_errors: true
|
492
541
|
# = f.govuk_radio_button :burger_id, :cheese, label: { text: 'Cheeseburger' }
|
493
542
|
#
|
494
|
-
def govuk_radio_buttons_fieldset(attribute_name,
|
495
|
-
Containers::RadioButtonsFieldset.new(self, object_name, attribute_name,
|
543
|
+
def govuk_radio_buttons_fieldset(attribute_name, hint: {}, legend: {}, caption: {}, inline: false, small: false, classes: nil, form_group: {}, &block)
|
544
|
+
Containers::RadioButtonsFieldset.new(self, object_name, attribute_name, hint: hint, legend: legend, caption: caption, inline: inline, small: small, classes: classes, form_group: form_group, &block).html
|
496
545
|
end
|
497
546
|
|
498
547
|
# Generates a radio button
|
499
548
|
#
|
500
549
|
# @note This should only be used from within a {#govuk_radio_buttons_fieldset}
|
501
550
|
# @param attribute_name [Symbol] The name of the attribute
|
502
|
-
# @param
|
551
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
552
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
553
|
+
# @option hint text [String] the hint text
|
554
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
503
555
|
# @option legend text [String] the fieldset legend's text content
|
504
556
|
# @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
|
505
557
|
# @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
|
@@ -517,8 +569,8 @@ module GOVUKDesignSystemFormBuilder
|
|
517
569
|
# = f.govuk_radio_buttons_fieldset :favourite_colour do
|
518
570
|
# = f.govuk_radio_button :favourite_colour, :red, label: { text: 'Red' }
|
519
571
|
#
|
520
|
-
def govuk_radio_button(attribute_name, value,
|
521
|
-
Elements::Radios::FieldsetRadioButton.new(self, object_name, attribute_name, value,
|
572
|
+
def govuk_radio_button(attribute_name, value, hint: {}, label: {}, link_errors: false, &block)
|
573
|
+
Elements::Radios::FieldsetRadioButton.new(self, object_name, attribute_name, value, hint: hint, label: label, link_errors: link_errors, &block).html
|
522
574
|
end
|
523
575
|
|
524
576
|
# Inserts a text divider into a list of radio buttons
|
@@ -541,7 +593,10 @@ module GOVUKDesignSystemFormBuilder
|
|
541
593
|
# @param text_method [Symbol] The method called against each member of the collection to provide the label text
|
542
594
|
# @param hint_method [Symbol, Proc] The method called against each member of the collection to provide the hint text.
|
543
595
|
# When a +Proc+ is provided it must take a single argument that is a single member of the collection
|
544
|
-
# @param
|
596
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
597
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
598
|
+
# @option hint text [String] the hint text
|
599
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
545
600
|
# @param small [Boolean] controls whether small check boxes are used instead of regular-sized ones
|
546
601
|
# @param classes [Array,String] Classes to add to the checkbox container.
|
547
602
|
# @param legend [Hash,Proc] options for configuring the legend
|
@@ -552,7 +607,9 @@ module GOVUKDesignSystemFormBuilder
|
|
552
607
|
# @param caption [Hash] configures or sets the caption content which is inserted above the legend
|
553
608
|
# @option caption text [String] the caption text
|
554
609
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
555
|
-
# @param
|
610
|
+
# @param form_group [Hash] configures the form group
|
611
|
+
# @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
|
556
613
|
# @param block [Block] any HTML passed in will be injected into the fieldset, after the hint and before the checkboxes
|
557
614
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
558
615
|
#
|
@@ -569,7 +626,7 @@ module GOVUKDesignSystemFormBuilder
|
|
569
626
|
# :name,
|
570
627
|
# :description,
|
571
628
|
# legend: { text: 'What do you want in your sandwich?', size: 'm' },
|
572
|
-
#
|
629
|
+
# hint: { text: "If it isn't listed here, tough luck" },
|
573
630
|
# inline: false,
|
574
631
|
# classes: 'app-overflow-scroll',
|
575
632
|
#
|
@@ -589,7 +646,7 @@ module GOVUKDesignSystemFormBuilder
|
|
589
646
|
# :name,
|
590
647
|
# legend: -> { tag.h3('What kind of sandwich do you want?') }
|
591
648
|
#
|
592
|
-
def govuk_collection_check_boxes(attribute_name, collection, value_method, text_method, hint_method = nil,
|
649
|
+
def govuk_collection_check_boxes(attribute_name, collection, value_method, text_method, hint_method = nil, hint: {}, legend: {}, caption: {}, small: false, classes: nil, form_group: {}, &block)
|
593
650
|
Elements::CheckBoxes::Collection.new(
|
594
651
|
self,
|
595
652
|
object_name,
|
@@ -598,12 +655,12 @@ module GOVUKDesignSystemFormBuilder
|
|
598
655
|
value_method: value_method,
|
599
656
|
text_method: text_method,
|
600
657
|
hint_method: hint_method,
|
601
|
-
|
658
|
+
hint: hint,
|
602
659
|
legend: legend,
|
603
660
|
caption: caption,
|
604
661
|
small: small,
|
605
662
|
classes: classes,
|
606
|
-
|
663
|
+
form_group: form_group,
|
607
664
|
&block
|
608
665
|
).html
|
609
666
|
end
|
@@ -614,7 +671,10 @@ module GOVUKDesignSystemFormBuilder
|
|
614
671
|
# is set to +link_errors: true+
|
615
672
|
#
|
616
673
|
# @param attribute_name [Symbol] The name of the attribute
|
617
|
-
# @param
|
674
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
675
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
676
|
+
# @option hint text [String] the hint text
|
677
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
618
678
|
# @param small [Boolean] controls whether small check boxes are used instead of regular-sized ones
|
619
679
|
# @param legend [Hash,Proc] options for configuring the legend
|
620
680
|
# @option legend text [String] the fieldset legend's text content
|
@@ -625,7 +685,9 @@ module GOVUKDesignSystemFormBuilder
|
|
625
685
|
# @option caption text [String] the caption text
|
626
686
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
627
687
|
# @param classes [Array,String] Classes to add to the checkbox container.
|
628
|
-
# @param
|
688
|
+
# @param form_group [Hash] configures the form group
|
689
|
+
# @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
|
629
691
|
# @param block [Block] a block of HTML that will be used to populate the fieldset
|
630
692
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
631
693
|
#
|
@@ -639,17 +701,17 @@ module GOVUKDesignSystemFormBuilder
|
|
639
701
|
# = f.govuk_check_box :desired_filling, :lemonade, label: { text: 'Lemonade' }, link_errors: true
|
640
702
|
# = f.govuk_check_box :desired_filling, :fizzy_orange, label: { text: 'Fizzy orange' }
|
641
703
|
#
|
642
|
-
def govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {},
|
704
|
+
def govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, classes: nil, form_group: {}, &block)
|
643
705
|
Containers::CheckBoxesFieldset.new(
|
644
706
|
self,
|
645
707
|
object_name,
|
646
708
|
attribute_name,
|
647
|
-
|
709
|
+
hint: hint,
|
648
710
|
legend: legend,
|
649
711
|
caption: caption,
|
650
712
|
small: small,
|
651
713
|
classes: classes,
|
652
|
-
|
714
|
+
form_group: form_group,
|
653
715
|
&block
|
654
716
|
).html
|
655
717
|
end
|
@@ -658,8 +720,10 @@ module GOVUKDesignSystemFormBuilder
|
|
658
720
|
#
|
659
721
|
# @param attribute_name [Symbol] The name of the attribute
|
660
722
|
# @param value [Boolean,String,Symbol,Integer] The value of the checkbox when it is checked
|
661
|
-
# @param
|
662
|
-
#
|
723
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
724
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
725
|
+
# @option hint text [String] the hint text
|
726
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
663
727
|
# @param link_errors [Boolean] controls whether this radio button should be linked to from {#govuk_error_summary}
|
664
728
|
# @option label text [String] the label text
|
665
729
|
# @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
|
@@ -675,16 +739,15 @@ module GOVUKDesignSystemFormBuilder
|
|
675
739
|
# multiple: false,
|
676
740
|
# link_errors: true,
|
677
741
|
# label: { text: 'Do you agree with our terms and conditions?' },
|
678
|
-
#
|
742
|
+
# hint: { text: 'You will not be able to proceed unless you do' }
|
679
743
|
#
|
680
|
-
def govuk_check_box(attribute_name,
|
744
|
+
def govuk_check_box(attribute_name, value, hint: {}, label: {}, link_errors: false, multiple: true, &block)
|
681
745
|
Elements::CheckBoxes::FieldsetCheckBox.new(
|
682
746
|
self,
|
683
747
|
object_name,
|
684
748
|
attribute_name,
|
685
|
-
|
686
|
-
|
687
|
-
hint_text: hint_text,
|
749
|
+
value,
|
750
|
+
hint: hint,
|
688
751
|
label: label,
|
689
752
|
link_errors: link_errors,
|
690
753
|
multiple: multiple,
|
@@ -728,7 +791,10 @@ module GOVUKDesignSystemFormBuilder
|
|
728
791
|
# of {https://bugs.ruby-lang.org/issues/5988 this} bug, so incorrect dates like +2019-09-31+ will
|
729
792
|
# be 'rounded' up to +2019-10-01+.
|
730
793
|
# @param attribute_name [Symbol] The name of the attribute
|
731
|
-
# @param
|
794
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
795
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
796
|
+
# @option hint text [String] the hint text
|
797
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
732
798
|
# @param legend [Hash,Proc] options for configuring the legend
|
733
799
|
# @option legend text [String] the fieldset legend's text content
|
734
800
|
# @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
|
@@ -738,7 +804,9 @@ module GOVUKDesignSystemFormBuilder
|
|
738
804
|
# @option caption text [String] the caption text
|
739
805
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
740
806
|
# @param omit_day [Boolean] do not render a day input, only capture month and year
|
741
|
-
# @param
|
807
|
+
# @param form_group [Hash] configures the form group
|
808
|
+
# @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
|
742
810
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input group
|
743
811
|
# @param date_of_birth [Boolean] if +true+ {https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values birth date auto completion attributes}
|
744
812
|
# will be added to the inputs
|
@@ -750,7 +818,7 @@ module GOVUKDesignSystemFormBuilder
|
|
750
818
|
# @example A regular date input with a legend, hint and injected content
|
751
819
|
# = f.govuk_date_field :starts_on,
|
752
820
|
# legend: { 'When does your event start?' },
|
753
|
-
#
|
821
|
+
# hint: { text: 'Leave this field blank if you don't know exactly' } do
|
754
822
|
#
|
755
823
|
# p.govuk-inset-text
|
756
824
|
# | If you don't fill this in you won't be eligable for a refund
|
@@ -758,8 +826,8 @@ module GOVUKDesignSystemFormBuilder
|
|
758
826
|
# @example A date input with legend supplied as a proc
|
759
827
|
# = f.govuk_date_field :finishes_on,
|
760
828
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
761
|
-
def govuk_date_field(attribute_name,
|
762
|
-
Elements::Date.new(self, object_name, attribute_name,
|
829
|
+
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, form_group: {}, &block)
|
830
|
+
Elements::Date.new(self, object_name, attribute_name, hint: hint, legend: legend, caption: caption, date_of_birth: date_of_birth, omit_day: omit_day, form_group: form_group, &block).html
|
763
831
|
end
|
764
832
|
|
765
833
|
# Generates a summary of errors in the form, each linking to the corresponding
|
@@ -815,9 +883,14 @@ module GOVUKDesignSystemFormBuilder
|
|
815
883
|
# @param caption [Hash] configures or sets the caption content which is inserted above the label
|
816
884
|
# @option caption text [String] the caption text
|
817
885
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
818
|
-
# @param
|
886
|
+
# @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
|
887
|
+
# supplied the hint will be wrapped in a +div+ instead of a +span+
|
888
|
+
# @option hint text [String] the hint text
|
889
|
+
# @option hint args [Hash] additional arguments are applied as attributes to the hint
|
819
890
|
# @option args [Hash] args additional arguments are applied as attributes to the +input+ element
|
820
|
-
# @param
|
891
|
+
# @param form_group [Hash] configures the form group
|
892
|
+
# @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
|
821
894
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
822
895
|
#
|
823
896
|
# @example A photo upload field with file type specifier and injected content
|
@@ -836,8 +909,8 @@ module GOVUKDesignSystemFormBuilder
|
|
836
909
|
# @note Remember to set +multipart: true+ when creating a form with file
|
837
910
|
# uploads, {https://guides.rubyonrails.org/form_helpers.html#uploading-files see
|
838
911
|
# the Rails documentation} for more information
|
839
|
-
def govuk_file_field(attribute_name, label: {}, caption: {},
|
840
|
-
Elements::File.new(self, object_name, attribute_name, label: label, caption: caption,
|
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
|
841
914
|
end
|
842
915
|
end
|
843
916
|
end
|