govuk_design_system_formbuilder 1.1.11 → 1.2.1
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/README.md +2 -2
- data/lib/govuk_design_system_formbuilder.rb +7 -1
- data/lib/govuk_design_system_formbuilder/base.rb +17 -0
- data/lib/govuk_design_system_formbuilder/builder.rb +205 -77
- data/lib/govuk_design_system_formbuilder/containers/character_count.rb +2 -2
- data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +5 -3
- data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +12 -11
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +37 -20
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +4 -2
- data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +12 -11
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +7 -5
- data/lib/govuk_design_system_formbuilder/elements/caption.rb +34 -0
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +11 -13
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +20 -16
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +24 -29
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +3 -1
- data/lib/govuk_design_system_formbuilder/elements/date.rb +31 -31
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +11 -8
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +26 -29
- data/lib/govuk_design_system_formbuilder/elements/file.rb +22 -21
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +6 -7
- data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/password.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/label.rb +39 -26
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +26 -24
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +16 -14
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +19 -21
- data/lib/govuk_design_system_formbuilder/elements/select.rb +12 -20
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +29 -27
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +27 -27
- data/lib/govuk_design_system_formbuilder/traits/caption.rb +23 -0
- data/lib/govuk_design_system_formbuilder/traits/input.rb +33 -41
- data/lib/govuk_design_system_formbuilder/traits/label.rb +12 -1
- data/lib/govuk_design_system_formbuilder/traits/localisation.rb +2 -0
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +19 -17
@@ -0,0 +1,23 @@
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
2
|
+
module Traits
|
3
|
+
module Caption
|
4
|
+
private
|
5
|
+
|
6
|
+
def caption_element
|
7
|
+
@caption_element ||= Elements::Caption.new(@builder, @object_name, @attribute_name, **caption_options)
|
8
|
+
end
|
9
|
+
|
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)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,50 +1,42 @@
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
2
2
|
module Traits
|
3
3
|
module Input
|
4
|
-
def initialize(builder, object_name, attribute_name, hint_text:, label:, width:, **
|
4
|
+
def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, width:, **kwargs, &block)
|
5
5
|
super(builder, object_name, attribute_name, &block)
|
6
6
|
|
7
|
-
@width
|
8
|
-
@
|
9
|
-
@label
|
10
|
-
@
|
7
|
+
@width = width
|
8
|
+
@attributes = kwargs
|
9
|
+
@label = label
|
10
|
+
@caption = caption
|
11
|
+
@hint_text = hint_text
|
11
12
|
end
|
12
13
|
|
13
14
|
def html
|
14
15
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
15
|
-
safe_join(
|
16
|
-
[
|
17
|
-
label_element.html,
|
18
|
-
supplemental_content.html,
|
19
|
-
hint_element.html,
|
20
|
-
error_element.html,
|
21
|
-
@builder.send(
|
22
|
-
builder_method,
|
23
|
-
@attribute_name,
|
24
|
-
id: field_id(link_errors: true),
|
25
|
-
class: input_classes,
|
26
|
-
aria: {
|
27
|
-
describedby: described_by(
|
28
|
-
hint_id,
|
29
|
-
error_id,
|
30
|
-
supplemental_id
|
31
|
-
)
|
32
|
-
},
|
33
|
-
**@extra_args
|
34
|
-
)
|
35
|
-
]
|
36
|
-
)
|
16
|
+
safe_join([label_element, supplemental_content, hint_element, error_element, input])
|
37
17
|
end
|
38
18
|
end
|
39
19
|
|
40
20
|
private
|
41
21
|
|
22
|
+
def input
|
23
|
+
@builder.send(builder_method, @attribute_name, **input_options.merge(@attributes))
|
24
|
+
end
|
25
|
+
|
26
|
+
def input_options
|
27
|
+
{
|
28
|
+
id: field_id(link_errors: true),
|
29
|
+
class: input_classes,
|
30
|
+
aria: { describedby: described_by(hint_id, error_id, supplemental_id) }
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
42
34
|
def input_classes
|
43
|
-
%
|
35
|
+
[%(#{brand}-input)].push(width_classes, error_classes).compact
|
44
36
|
end
|
45
37
|
|
46
38
|
def error_classes
|
47
|
-
|
39
|
+
%(#{brand}-input--error) if has_errors?
|
48
40
|
end
|
49
41
|
|
50
42
|
def width_classes
|
@@ -53,20 +45,20 @@ module GOVUKDesignSystemFormBuilder
|
|
53
45
|
case @width
|
54
46
|
|
55
47
|
# fixed (character) widths
|
56
|
-
when 20 then
|
57
|
-
when 10 then
|
58
|
-
when 5 then
|
59
|
-
when 4 then
|
60
|
-
when 3 then
|
61
|
-
when 2 then
|
48
|
+
when 20 then %(#{brand}-input--width-20)
|
49
|
+
when 10 then %(#{brand}-input--width-10)
|
50
|
+
when 5 then %(#{brand}-input--width-5)
|
51
|
+
when 4 then %(#{brand}-input--width-4)
|
52
|
+
when 3 then %(#{brand}-input--width-3)
|
53
|
+
when 2 then %(#{brand}-input--width-2)
|
62
54
|
|
63
55
|
# fluid widths
|
64
|
-
when 'full' then
|
65
|
-
when 'three-quarters' then
|
66
|
-
when 'two-thirds' then
|
67
|
-
when 'one-half' then
|
68
|
-
when 'one-third' then
|
69
|
-
when 'one-quarter' then
|
56
|
+
when 'full' then %(#{brand}-!-width-full)
|
57
|
+
when 'three-quarters' then %(#{brand}-!-width-three-quarters)
|
58
|
+
when 'two-thirds' then %(#{brand}-!-width-two-thirds)
|
59
|
+
when 'one-half' then %(#{brand}-!-width-one-half)
|
60
|
+
when 'one-third' then %(#{brand}-!-width-one-third)
|
61
|
+
when 'one-quarter' then %(#{brand}-!-width-one-quarter)
|
70
62
|
|
71
63
|
else fail(ArgumentError, "invalid width '#{@width}'")
|
72
64
|
end
|
@@ -4,7 +4,18 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
private
|
5
5
|
|
6
6
|
def label_element
|
7
|
-
@label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name,
|
7
|
+
@label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, caption: @caption, **label_options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def label_options
|
11
|
+
case @label
|
12
|
+
when Hash
|
13
|
+
@label
|
14
|
+
when Proc
|
15
|
+
{ content: @label }
|
16
|
+
else
|
17
|
+
fail(ArgumentError, %(label must be a Proc or Hash))
|
18
|
+
end
|
8
19
|
end
|
9
20
|
end
|
10
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_design_system_formbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.14.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.14.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,22 +84,22 @@ dependencies:
|
|
84
84
|
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 3.9.0
|
90
87
|
- - "~>"
|
91
88
|
- !ruby/object:Gem::Version
|
92
89
|
version: '3.9'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 3.9.0
|
93
93
|
type: :development
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: 3.9.0
|
100
97
|
- - "~>"
|
101
98
|
- !ruby/object:Gem::Version
|
102
99
|
version: '3.9'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 3.9.0
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rspec-html-matchers
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,14 +134,14 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: 0.
|
137
|
+
version: 0.18.5
|
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.
|
144
|
+
version: 0.18.5
|
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.
|
179
|
+
version: 3.19.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.
|
186
|
+
version: 3.19.0
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: rubypants
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -232,14 +232,14 @@ dependencies:
|
|
232
232
|
requirements:
|
233
233
|
- - "~>"
|
234
234
|
- !ruby/object:Gem::Version
|
235
|
-
version: 4.0
|
235
|
+
version: 4.1.0
|
236
236
|
type: :development
|
237
237
|
prerelease: false
|
238
238
|
version_requirements: !ruby/object:Gem::Requirement
|
239
239
|
requirements:
|
240
240
|
- - "~>"
|
241
241
|
- !ruby/object:Gem::Version
|
242
|
-
version: 4.0
|
242
|
+
version: 4.1.0
|
243
243
|
description: A Rails form builder that generates form inputs adhering to the GOV.UK
|
244
244
|
Design System
|
245
245
|
email:
|
@@ -260,6 +260,7 @@ files:
|
|
260
260
|
- lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb
|
261
261
|
- lib/govuk_design_system_formbuilder/containers/radios.rb
|
262
262
|
- lib/govuk_design_system_formbuilder/containers/supplemental.rb
|
263
|
+
- lib/govuk_design_system_formbuilder/elements/caption.rb
|
263
264
|
- lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb
|
264
265
|
- lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb
|
265
266
|
- lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb
|
@@ -282,6 +283,7 @@ files:
|
|
282
283
|
- lib/govuk_design_system_formbuilder/elements/select.rb
|
283
284
|
- lib/govuk_design_system_formbuilder/elements/submit.rb
|
284
285
|
- lib/govuk_design_system_formbuilder/elements/text_area.rb
|
286
|
+
- lib/govuk_design_system_formbuilder/traits/caption.rb
|
285
287
|
- lib/govuk_design_system_formbuilder/traits/collection_item.rb
|
286
288
|
- lib/govuk_design_system_formbuilder/traits/conditional.rb
|
287
289
|
- lib/govuk_design_system_formbuilder/traits/error.rb
|
@@ -315,7 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
315
317
|
- !ruby/object:Gem::Version
|
316
318
|
version: '0'
|
317
319
|
requirements: []
|
318
|
-
rubygems_version: 3.
|
320
|
+
rubygems_version: 3.1.2
|
319
321
|
signing_key:
|
320
322
|
specification_version: 4
|
321
323
|
summary: GOV.UK-compliant Rails form builder
|