govuk_design_system_formbuilder 1.2.0 → 1.2.5
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.rb +4 -0
- data/lib/govuk_design_system_formbuilder/base.rb +5 -0
- data/lib/govuk_design_system_formbuilder/builder.rb +52 -33
- data/lib/govuk_design_system_formbuilder/containers/character_count.rb +8 -7
- data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +18 -10
- data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +27 -18
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +15 -55
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +18 -10
- data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +28 -19
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +22 -11
- data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/caption.rb +8 -6
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +29 -23
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +17 -15
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +28 -32
- data/lib/govuk_design_system_formbuilder/elements/date.rb +55 -51
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +7 -6
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +24 -27
- data/lib/govuk_design_system_formbuilder/elements/file.rb +21 -22
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +13 -16
- data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +2 -0
- data/lib/govuk_design_system_formbuilder/elements/label.rb +40 -29
- data/lib/govuk_design_system_formbuilder/elements/legend.rb +79 -0
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +46 -36
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +24 -14
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +18 -19
- data/lib/govuk_design_system_formbuilder/elements/select.rb +28 -34
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +34 -25
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +39 -40
- data/lib/govuk_design_system_formbuilder/traits/caption.rb +5 -6
- data/lib/govuk_design_system_formbuilder/traits/input.rb +21 -29
- data/lib/govuk_design_system_formbuilder/traits/label.rb +2 -2
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +16 -15
@@ -8,55 +8,54 @@ module GOVUKDesignSystemFormBuilder
|
|
8
8
|
include Traits::Label
|
9
9
|
include Traits::Supplemental
|
10
10
|
|
11
|
-
def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, rows:, max_words:, max_chars:, threshold:, **
|
11
|
+
def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, rows:, max_words:, max_chars:, threshold:, form_group_classes:, **kwargs, &block)
|
12
12
|
super(builder, object_name, attribute_name, &block)
|
13
13
|
|
14
|
-
@label
|
15
|
-
@caption
|
16
|
-
@hint_text
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
14
|
+
@label = label
|
15
|
+
@caption = caption
|
16
|
+
@hint_text = hint_text
|
17
|
+
@max_words = max_words
|
18
|
+
@max_chars = max_chars
|
19
|
+
@threshold = threshold
|
20
|
+
@rows = rows
|
21
|
+
@form_group_classes = form_group_classes
|
22
|
+
@html_attributes = kwargs
|
22
23
|
end
|
23
24
|
|
24
25
|
def html
|
25
|
-
Containers::CharacterCount.new(@builder,
|
26
|
-
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
27
|
-
safe_join(
|
28
|
-
[
|
29
|
-
[
|
30
|
-
label_element,
|
31
|
-
supplemental_content,
|
32
|
-
hint_element,
|
33
|
-
error_element
|
34
|
-
].map(&:html),
|
35
|
-
@builder.text_area(
|
36
|
-
@attribute_name,
|
37
|
-
id: field_id(link_errors: true),
|
38
|
-
class: govuk_textarea_classes,
|
39
|
-
aria: {
|
40
|
-
describedby: described_by(hint_id, error_id, supplemental_id, limit_description_id)
|
41
|
-
},
|
42
|
-
**@extra_args.merge(rows: @rows)
|
43
|
-
),
|
44
|
-
limit_description
|
45
|
-
].flatten.compact
|
46
|
-
)
|
26
|
+
Containers::CharacterCount.new(@builder, **character_count_options).html do
|
27
|
+
Containers::FormGroup.new(@builder, @object_name, @attribute_name, classes: @form_group_classes).html do
|
28
|
+
safe_join([label_element, supplemental_content, hint_element, error_element, text_area, limit_description])
|
47
29
|
end
|
48
30
|
end
|
49
31
|
end
|
50
32
|
|
51
33
|
private
|
52
34
|
|
53
|
-
def
|
35
|
+
def character_count_options
|
36
|
+
{ max_words: @max_words, max_chars: @max_chars, threshold: @threshold }
|
37
|
+
end
|
38
|
+
|
39
|
+
def text_area
|
40
|
+
@builder.text_area(@attribute_name, **options, **@html_attributes)
|
41
|
+
end
|
42
|
+
|
43
|
+
def classes
|
54
44
|
%w(textarea).prefix(brand).tap do |classes|
|
55
45
|
classes.push(%(#{brand}-textarea--error)) if has_errors?
|
56
46
|
classes.push(%(#{brand}-js-character-count)) if limit?
|
57
47
|
end
|
58
48
|
end
|
59
49
|
|
50
|
+
def options
|
51
|
+
{
|
52
|
+
id: field_id(link_errors: true),
|
53
|
+
class: classes,
|
54
|
+
rows: @rows,
|
55
|
+
aria: { describedby: described_by(hint_id, error_id, supplemental_id, limit_description_id) },
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
60
59
|
# Provides an id for use by the textual description of character and word limits.
|
61
60
|
#
|
62
61
|
# @note In order for the GOV.UK Frontend JavaScript to pick up this associated field
|
@@ -66,9 +65,17 @@ module GOVUKDesignSystemFormBuilder
|
|
66
65
|
end
|
67
66
|
|
68
67
|
def limit?
|
68
|
+
limit_quantity.present?
|
69
|
+
end
|
70
|
+
|
71
|
+
def limit_quantity
|
69
72
|
@max_words || @max_chars
|
70
73
|
end
|
71
74
|
|
75
|
+
def limit_type
|
76
|
+
@max_words.present? ? 'words' : 'characters'
|
77
|
+
end
|
78
|
+
|
72
79
|
def limit_description
|
73
80
|
return nil unless limit?
|
74
81
|
|
@@ -81,14 +88,6 @@ module GOVUKDesignSystemFormBuilder
|
|
81
88
|
%w(hint character-count__message).prefix(brand)
|
82
89
|
end
|
83
90
|
|
84
|
-
def limit_quantity
|
85
|
-
@max_words || @max_chars
|
86
|
-
end
|
87
|
-
|
88
|
-
def limit_type
|
89
|
-
@max_words.present? ? 'words' : 'characters'
|
90
|
-
end
|
91
|
-
|
92
91
|
def limit_description_id
|
93
92
|
return nil unless limit?
|
94
93
|
|
@@ -4,12 +4,11 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
private
|
5
5
|
|
6
6
|
def caption_element
|
7
|
-
@caption_element ||= Elements::Caption.new(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
)
|
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)
|
13
12
|
end
|
14
13
|
|
15
14
|
def caption_text
|
@@ -1,45 +1,37 @@
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
2
2
|
module Traits
|
3
3
|
module Input
|
4
|
-
def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, width:, **
|
4
|
+
def initialize(builder, object_name, attribute_name, hint_text:, label:, caption:, width:, form_group_classes:, **kwargs, &block)
|
5
5
|
super(builder, object_name, attribute_name, &block)
|
6
6
|
|
7
|
-
@width
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
11
|
-
@
|
7
|
+
@width = width
|
8
|
+
@label = label
|
9
|
+
@caption = caption
|
10
|
+
@hint_text = hint_text
|
11
|
+
@html_attributes = kwargs
|
12
|
+
@form_group_classes = form_group_classes
|
12
13
|
end
|
13
14
|
|
14
15
|
def html
|
15
|
-
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
16
|
-
safe_join(
|
17
|
-
[
|
18
|
-
label_element.html,
|
19
|
-
supplemental_content.html,
|
20
|
-
hint_element.html,
|
21
|
-
error_element.html,
|
22
|
-
@builder.send(
|
23
|
-
builder_method,
|
24
|
-
@attribute_name,
|
25
|
-
id: field_id(link_errors: true),
|
26
|
-
class: input_classes,
|
27
|
-
aria: {
|
28
|
-
describedby: described_by(
|
29
|
-
hint_id,
|
30
|
-
error_id,
|
31
|
-
supplemental_id
|
32
|
-
)
|
33
|
-
},
|
34
|
-
**@extra_args
|
35
|
-
)
|
36
|
-
]
|
37
|
-
)
|
16
|
+
Containers::FormGroup.new(@builder, @object_name, @attribute_name, classes: @form_group_classes).html do
|
17
|
+
safe_join([label_element, supplemental_content, hint_element, error_element, input])
|
38
18
|
end
|
39
19
|
end
|
40
20
|
|
41
21
|
private
|
42
22
|
|
23
|
+
def input
|
24
|
+
@builder.send(builder_method, @attribute_name, **input_options, **@html_attributes)
|
25
|
+
end
|
26
|
+
|
27
|
+
def input_options
|
28
|
+
{
|
29
|
+
id: field_id(link_errors: true),
|
30
|
+
class: input_classes,
|
31
|
+
aria: { describedby: described_by(hint_id, error_id, supplemental_id) }
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
43
35
|
def input_classes
|
44
36
|
[%(#{brand}-input)].push(width_classes, error_classes).compact
|
45
37
|
end
|
@@ -4,10 +4,10 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
private
|
5
5
|
|
6
6
|
def label_element
|
7
|
-
@label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, caption: @caption, **
|
7
|
+
@label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, caption: @caption, **label_content)
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def label_content
|
11
11
|
case @label
|
12
12
|
when Hash
|
13
13
|
@label
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_design_system_formbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
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-07-08 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.16.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.16.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
|
@@ -176,14 +176,14 @@ dependencies:
|
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: 3.
|
179
|
+
version: 3.20.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.20.0
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: rubypants
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,14 +204,14 @@ dependencies:
|
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: 2.
|
207
|
+
version: 2.4.0
|
208
208
|
type: :development
|
209
209
|
prerelease: false
|
210
210
|
version_requirements: !ruby/object:Gem::Requirement
|
211
211
|
requirements:
|
212
212
|
- - "~>"
|
213
213
|
- !ruby/object:Gem::Version
|
214
|
-
version: 2.
|
214
|
+
version: 2.4.0
|
215
215
|
- !ruby/object:Gem::Dependency
|
216
216
|
name: sass
|
217
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -277,6 +277,7 @@ files:
|
|
277
277
|
- lib/govuk_design_system_formbuilder/elements/inputs/text.rb
|
278
278
|
- lib/govuk_design_system_formbuilder/elements/inputs/url.rb
|
279
279
|
- lib/govuk_design_system_formbuilder/elements/label.rb
|
280
|
+
- lib/govuk_design_system_formbuilder/elements/legend.rb
|
280
281
|
- lib/govuk_design_system_formbuilder/elements/radios/collection.rb
|
281
282
|
- lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb
|
282
283
|
- lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
|
@@ -317,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
318
|
- !ruby/object:Gem::Version
|
318
319
|
version: '0'
|
319
320
|
requirements: []
|
320
|
-
rubygems_version: 3.
|
321
|
+
rubygems_version: 3.1.2
|
321
322
|
signing_key:
|
322
323
|
specification_version: 4
|
323
324
|
summary: GOV.UK-compliant Rails form builder
|