govuk_design_system_formbuilder 0.9.7 → 0.9.8
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 +1 -1
- data/lib/govuk_design_system_formbuilder/base.rb +5 -3
- data/lib/govuk_design_system_formbuilder/builder.rb +3 -2
- data/lib/govuk_design_system_formbuilder/containers/character_count.rb +1 -1
- data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +1 -1
- data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +2 -2
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +4 -4
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +1 -1
- data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +2 -2
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +1 -1
- data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/hint.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/date.rb +31 -17
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +8 -8
- data/lib/govuk_design_system_formbuilder/elements/file.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/inputs/base.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/label.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/select.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +1 -1
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34191822b2322a27884781b5fdc5d494385f0386b349c8253c213f76cef55600
|
4
|
+
data.tar.gz: dc0d69655c5d8bcbeaa967b852566abec1b821ad9ef43a6f0a4bc65afafc841a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21f8a1d3f15d4de5f01bb54804fbb700ca902f6cb7dee40ab686b500d3d9133f2c3983b48fb4ee040ffcb24c19d03c5511736dc9ca732d3204caeb45ad185e20
|
7
|
+
data.tar.gz: 154333ebb09be62fd38a1d4c0b3449d0a140d2c732e1010f2a164b095f93cd1d67c6870fbf6908729cc8a78cc02ea131f67677f685cef680a276611706b1b2b6
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
[](https://app.netlify.com/sites/govuk-form-builder/deploys)
|
8
8
|
|
9
9
|
This gem provides a easy-to-use form builder that generates forms that are
|
10
|
-
fully-compliant with version 3.
|
10
|
+
fully-compliant with version 3.3.0 of the [GOV.UK Design System](https://design-system.service.gov.uk/),
|
11
11
|
minimising the amount of markup you need to write.
|
12
12
|
|
13
13
|
The latest version of this gem that supports GOV.UK Design System version 2 is
|
@@ -1,10 +1,12 @@
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
2
2
|
class Base
|
3
|
+
delegate :capture, :content_tag, :safe_join, :tag, :raw, :link_to, to: :@builder
|
4
|
+
|
3
5
|
def initialize(builder, object_name, attribute_name, &block)
|
4
6
|
@builder = builder
|
5
7
|
@object_name = object_name
|
6
8
|
@attribute_name = attribute_name
|
7
|
-
@block_content =
|
9
|
+
@block_content = capture { block.call } if block_given?
|
8
10
|
end
|
9
11
|
|
10
12
|
def hint_element
|
@@ -72,8 +74,8 @@ module GOVUKDesignSystemFormBuilder
|
|
72
74
|
end
|
73
75
|
|
74
76
|
def wrap_conditional(block)
|
75
|
-
|
76
|
-
|
77
|
+
content_tag('div', class: conditional_classes, id: conditional_id) do
|
78
|
+
capture { block.call }
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
@@ -465,6 +465,7 @@ module GOVUKDesignSystemFormBuilder
|
|
465
465
|
# @option legend text [String] the fieldset legend's text content
|
466
466
|
# @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
|
467
467
|
# @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
|
468
|
+
# @param omit_day [Boolean] do not render a day input, only capture month and year
|
468
469
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input group
|
469
470
|
# @param date_of_birth [Boolean] if +true+ {https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values birth date auto completion attributes}
|
470
471
|
# will be added to the inputs
|
@@ -476,8 +477,8 @@ module GOVUKDesignSystemFormBuilder
|
|
476
477
|
# = f.govuk_date_field :starts_on,
|
477
478
|
# legend: { 'When does your event start?' },
|
478
479
|
# hint_text: 'Leave this field blank if you don't know exactly' }
|
479
|
-
def govuk_date_field(attribute_name, hint_text: nil, legend: {}, date_of_birth: false, &block)
|
480
|
-
Elements::Date.new(self, object_name, attribute_name, hint_text: hint_text, legend: legend, date_of_birth: date_of_birth, &block).html
|
480
|
+
def govuk_date_field(attribute_name, hint_text: nil, legend: {}, date_of_birth: false, omit_day: false, &block)
|
481
|
+
Elements::Date.new(self, object_name, attribute_name, hint_text: hint_text, legend: legend, date_of_birth: date_of_birth, omit_day: omit_day, &block).html
|
481
482
|
end
|
482
483
|
|
483
484
|
# Generates a summary of errors in the form, each linking to the corresponding
|
@@ -7,7 +7,7 @@ module GOVUKDesignSystemFormBuilder
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def html
|
10
|
-
|
10
|
+
content_tag('div', class: check_boxes_classes, data: { module: 'govuk-checkboxes' }) do
|
11
11
|
yield
|
12
12
|
end
|
13
13
|
end
|
@@ -7,13 +7,13 @@ module GOVUKDesignSystemFormBuilder
|
|
7
7
|
@legend = legend
|
8
8
|
@hint_text = hint_text
|
9
9
|
@small = small
|
10
|
-
@block_content =
|
10
|
+
@block_content = capture { block.call }
|
11
11
|
end
|
12
12
|
|
13
13
|
def html
|
14
14
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
15
15
|
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
16
|
-
|
16
|
+
safe_join(
|
17
17
|
[
|
18
18
|
hint_element.html,
|
19
19
|
error_element.html,
|
@@ -11,8 +11,8 @@ module GOVUKDesignSystemFormBuilder
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def html
|
14
|
-
|
15
|
-
|
14
|
+
content_tag('fieldset', class: fieldset_classes, aria: { describedby: @described_by }) do
|
15
|
+
safe_join([build_legend, yield])
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -20,8 +20,8 @@ module GOVUKDesignSystemFormBuilder
|
|
20
20
|
|
21
21
|
def build_legend
|
22
22
|
if @legend.dig(:text).present?
|
23
|
-
|
24
|
-
|
23
|
+
content_tag('legend', class: legend_classes) do
|
24
|
+
tag.send(@legend.dig(:tag), @legend.dig(:text), class: legend_heading_classes)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -8,13 +8,13 @@ module GOVUKDesignSystemFormBuilder
|
|
8
8
|
@small = small
|
9
9
|
@legend = legend
|
10
10
|
@hint_text = hint_text
|
11
|
-
@block_content =
|
11
|
+
@block_content = capture { block.call }
|
12
12
|
end
|
13
13
|
|
14
14
|
def html
|
15
15
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
16
16
|
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
17
|
-
|
17
|
+
safe_join(
|
18
18
|
[
|
19
19
|
hint_element.html,
|
20
20
|
error_element.html,
|
@@ -17,7 +17,7 @@ module GOVUKDesignSystemFormBuilder
|
|
17
17
|
def html
|
18
18
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
19
19
|
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_id, hint_id, supplemental_id]).html do
|
20
|
-
|
20
|
+
safe_join(
|
21
21
|
[
|
22
22
|
hint_element.html,
|
23
23
|
error_element.html,
|
@@ -12,8 +12,8 @@ module GOVUKDesignSystemFormBuilder
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def html
|
15
|
-
|
16
|
-
|
15
|
+
content_tag('div', class: 'govuk-checkboxes__item') do
|
16
|
+
safe_join(
|
17
17
|
[
|
18
18
|
@checkbox.check_box(
|
19
19
|
id: field_id(link_errors: @link_errors),
|
@@ -18,10 +18,10 @@ module GOVUKDesignSystemFormBuilder
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def html
|
21
|
-
|
21
|
+
safe_join(
|
22
22
|
[
|
23
|
-
|
24
|
-
|
23
|
+
content_tag('div', class: 'govuk-checkboxes__item') do
|
24
|
+
safe_join(
|
25
25
|
[
|
26
26
|
input,
|
27
27
|
label_element.html,
|
@@ -3,29 +3,25 @@ module GOVUKDesignSystemFormBuilder
|
|
3
3
|
class Date < GOVUKDesignSystemFormBuilder::Base
|
4
4
|
SEGMENTS = { day: '3i', month: '2i', year: '1i' }.freeze
|
5
5
|
|
6
|
-
def initialize(builder, object_name, attribute_name, legend:, hint_text:, date_of_birth: false, &block)
|
6
|
+
def initialize(builder, object_name, attribute_name, legend:, hint_text:, date_of_birth: false, omit_day:, &block)
|
7
7
|
super(builder, object_name, attribute_name, &block)
|
8
|
-
|
9
|
-
@
|
8
|
+
|
9
|
+
@legend = legend
|
10
|
+
@hint_text = hint_text
|
10
11
|
@date_of_birth = date_of_birth
|
12
|
+
@omit_day = omit_day
|
11
13
|
end
|
12
14
|
|
13
15
|
def html
|
14
16
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
15
17
|
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_id, hint_id, supplemental_id]).html do
|
16
|
-
|
18
|
+
safe_join(
|
17
19
|
[
|
18
20
|
hint_element.html,
|
19
21
|
error_element.html,
|
20
22
|
supplemental_content.html,
|
21
|
-
|
22
|
-
|
23
|
-
[
|
24
|
-
date_input_item(:day, link_errors: true),
|
25
|
-
date_input_item(:month),
|
26
|
-
date_input_item(:year, width: 4)
|
27
|
-
]
|
28
|
-
)
|
23
|
+
content_tag('div', class: 'govuk-date-input') do
|
24
|
+
safe_join([day, month, year])
|
29
25
|
end
|
30
26
|
]
|
31
27
|
)
|
@@ -35,20 +31,38 @@ module GOVUKDesignSystemFormBuilder
|
|
35
31
|
|
36
32
|
private
|
37
33
|
|
34
|
+
def omit_day?
|
35
|
+
@omit_day
|
36
|
+
end
|
37
|
+
|
38
|
+
def day
|
39
|
+
return nil if omit_day?
|
40
|
+
|
41
|
+
date_input_item(:day, link_errors: true)
|
42
|
+
end
|
43
|
+
|
44
|
+
def month
|
45
|
+
date_input_item(:month, link_errors: omit_day?)
|
46
|
+
end
|
47
|
+
|
48
|
+
def year
|
49
|
+
date_input_item(:year, width: 4)
|
50
|
+
end
|
51
|
+
|
38
52
|
def date_input_item(segment, width: 2, link_errors: false)
|
39
53
|
value = @builder.object.try(@attribute_name).try(segment)
|
40
54
|
|
41
|
-
|
42
|
-
|
43
|
-
|
55
|
+
content_tag('div', class: %w(govuk-date-input__item)) do
|
56
|
+
content_tag('div', class: %w(govuk-form-group)) do
|
57
|
+
safe_join(
|
44
58
|
[
|
45
|
-
|
59
|
+
tag.label(
|
46
60
|
segment.capitalize,
|
47
61
|
class: date_input_label_classes,
|
48
62
|
for: date_attribute_id(segment, link_errors)
|
49
63
|
),
|
50
64
|
|
51
|
-
|
65
|
+
tag.input(
|
52
66
|
id: date_attribute_id(segment, link_errors),
|
53
67
|
class: date_input_classes(width),
|
54
68
|
name: date_attribute_name(segment),
|
@@ -8,10 +8,10 @@ module GOVUKDesignSystemFormBuilder
|
|
8
8
|
def html
|
9
9
|
return nil unless has_errors?
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
content_tag('span', class: 'govuk-error-message', id: error_id) do
|
12
|
+
safe_join(
|
13
13
|
[
|
14
|
-
|
14
|
+
tag.span('Error: ', class: 'govuk-visually-hidden'),
|
15
15
|
message
|
16
16
|
]
|
17
17
|
)
|
@@ -10,13 +10,13 @@ module GOVUKDesignSystemFormBuilder
|
|
10
10
|
def html
|
11
11
|
return nil unless object_has_errors?
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
content_tag('div', class: summary_class, **error_summary_attributes) do
|
14
|
+
safe_join(
|
15
15
|
[
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
tag.h2(@title, id: error_summary_title_id, class: summary_class('title')),
|
17
|
+
content_tag('div', class: summary_class('body')) do
|
18
|
+
content_tag('ul', class: ['govuk-list', summary_class('list')]) do
|
19
|
+
safe_join(
|
20
20
|
@builder.object.errors.messages.map do |attribute, messages|
|
21
21
|
error_list_item(attribute, messages.first)
|
22
22
|
end
|
@@ -31,8 +31,8 @@ module GOVUKDesignSystemFormBuilder
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def error_list_item(attribute, message)
|
34
|
-
|
35
|
-
|
34
|
+
content_tag('li') do
|
35
|
+
link_to(
|
36
36
|
message,
|
37
37
|
same_page_link(field_id(attribute)),
|
38
38
|
data: {
|
@@ -17,7 +17,7 @@ module GOVUKDesignSystemFormBuilder
|
|
17
17
|
return nil if @text.blank?
|
18
18
|
|
19
19
|
if @tag.present?
|
20
|
-
|
20
|
+
content_tag(@tag, class: 'govuk-label-wrapper') { build_label }
|
21
21
|
else
|
22
22
|
build_label
|
23
23
|
end
|
@@ -40,9 +40,9 @@ module GOVUKDesignSystemFormBuilder
|
|
40
40
|
text = [option_text, @value, @attribute_name.capitalize].compact.first
|
41
41
|
|
42
42
|
if hidden
|
43
|
-
|
43
|
+
tag.span(text, class: %w(govuk-visually-hidden))
|
44
44
|
else
|
45
|
-
|
45
|
+
raw(text)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -19,13 +19,13 @@ module GOVUKDesignSystemFormBuilder
|
|
19
19
|
def html
|
20
20
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
21
21
|
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_id, hint_id, supplemental_id]).html do
|
22
|
-
|
22
|
+
safe_join(
|
23
23
|
[
|
24
24
|
hint_element.html,
|
25
25
|
error_element.html,
|
26
26
|
supplemental_content.html,
|
27
27
|
Containers::Radios.new(@builder, inline: @inline, small: @small).html do
|
28
|
-
|
28
|
+
safe_join(build_collection)
|
29
29
|
end
|
30
30
|
]
|
31
31
|
)
|
@@ -17,8 +17,8 @@ module GOVUKDesignSystemFormBuilder
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def html
|
20
|
-
|
21
|
-
|
20
|
+
content_tag('div', class: 'govuk-radios__item') do
|
21
|
+
safe_join(
|
22
22
|
[
|
23
23
|
@builder.radio_button(
|
24
24
|
@attribute_name,
|
@@ -17,10 +17,10 @@ module GOVUKDesignSystemFormBuilder
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def html
|
20
|
-
|
20
|
+
safe_join(
|
21
21
|
[
|
22
|
-
|
23
|
-
|
22
|
+
content_tag('div', class: 'govuk-radios__item') do
|
23
|
+
safe_join(
|
24
24
|
[
|
25
25
|
input,
|
26
26
|
label_element.html,
|
@@ -10,12 +10,12 @@ module GOVUKDesignSystemFormBuilder
|
|
10
10
|
@warning = warning
|
11
11
|
@secondary = secondary
|
12
12
|
@validate = validate
|
13
|
-
@block_content =
|
13
|
+
@block_content = capture { block.call } if block_given?
|
14
14
|
end
|
15
15
|
|
16
16
|
def html
|
17
|
-
|
18
|
-
|
17
|
+
content_tag('div', class: %w(govuk-form-group)) do
|
18
|
+
safe_join(
|
19
19
|
[
|
20
20
|
@builder.submit(
|
21
21
|
@text,
|
@@ -15,7 +15,7 @@ module GOVUKDesignSystemFormBuilder
|
|
15
15
|
def html
|
16
16
|
Containers::CharacterCount.new(@builder, max_words: @max_words, max_chars: @max_chars, threshold: @threshold).html do
|
17
17
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
18
|
-
|
18
|
+
safe_join(
|
19
19
|
[
|
20
20
|
[label_element, hint_element, error_element, supplemental_content].map(&:html),
|
21
21
|
@builder.text_area(
|
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: 0.9.
|
4
|
+
version: 0.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|