govuk_design_system_formbuilder 2.1.5 → 2.1.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 +4 -2
- data/lib/govuk_design_system_formbuilder/base.rb +1 -1
- data/lib/govuk_design_system_formbuilder/builder.rb +7 -5
- data/lib/govuk_design_system_formbuilder/containers/button_group.rb +15 -0
- data/lib/govuk_design_system_formbuilder/containers/character_count.rb +3 -3
- data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +4 -3
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +2 -2
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +4 -3
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/date.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +0 -4
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/null.rb +3 -1
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +21 -14
- data/lib/govuk_design_system_formbuilder/elements/select.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +12 -7
- data/lib/govuk_design_system_formbuilder/traits/collection_item.rb +1 -1
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c234131d78ff639d142f65d670b23876a8fb38eddea46a83e21aeb3d9f6daa2
|
4
|
+
data.tar.gz: 211981c7246de88afb294f72a06b6e0432f2e5f38f26449b43d7c5fc87f36c7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd8d23e033c5ca4770b258c12b6ac59eca551da6c55838f5bf76ceeb98549ce8beb7ebd3c0c412942687aa60ad9596e96dc6324b783a262f3d02028bc5862298
|
7
|
+
data.tar.gz: 482d6efa88f4b02b305f51b5e897550e076390ccb69281d4ae533d043e9761b341078ec4f06943bf6f8582c37b906a5c902e84eeca4b6e42000ed3ba349878c8
|
data/README.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# GOV.UK Design System Form Builder for Rails
|
2
2
|
|
3
|
-
[](https://github.com/DFE-Digital/govuk_design_system_formbuilder/actions)
|
4
4
|
[](https://codeclimate.com/github/DFE-Digital/govuk_design_system_formbuilder/maintainability)
|
5
5
|
[](https://badge.fury.io/rb/govuk_design_system_formbuilder)
|
6
6
|
[](https://rubygems.org/gems/govuk_design_system_formbuilder)
|
7
7
|
[](https://codeclimate.com/github/DFE-Digital/govuk_design_system_formbuilder/test_coverage)
|
8
8
|
[](https://dependabot.com)
|
9
9
|
[](https://github.com/DFE-Digital/govuk_design_system_formbuilder/blob/master/LICENSE)
|
10
|
-
[](https://design-system.service.gov.uk)
|
11
|
+
[](https://weblog.rubyonrails.org/releases/)
|
12
|
+
[](https://www.ruby-lang.org/en/downloads/)
|
11
13
|
|
12
14
|
This library provides an easy-to-use form builder for the [GOV.UK Design System](https://design-system.service.gov.uk/).
|
13
15
|
|
@@ -53,7 +53,7 @@ module GOVUKDesignSystemFormBuilder
|
|
53
53
|
def has_errors?
|
54
54
|
@builder.object.respond_to?(:errors) &&
|
55
55
|
@builder.object.errors.any? &&
|
56
|
-
@builder.object.errors.messages
|
56
|
+
@builder.object.errors.messages[@attribute_name].present?
|
57
57
|
end
|
58
58
|
|
59
59
|
def described_by(*ids)
|
@@ -456,6 +456,7 @@ module GOVUKDesignSystemFormBuilder
|
|
456
456
|
# @param inline [Boolean] controls whether the radio buttons are displayed inline or not
|
457
457
|
# @param small [Boolean] controls whether small radio buttons are used instead of regular-sized ones
|
458
458
|
# @param bold_labels [Boolean] controls whether the radio button labels are bold
|
459
|
+
# @param include_hidden [Boolean] controls whether a hidden field is inserted to allow for empty submissions
|
459
460
|
# @param classes [Array,String] Classes to add to the radio button container.
|
460
461
|
# @option legend text [String] the fieldset legend's text content
|
461
462
|
# @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
|
@@ -500,7 +501,7 @@ module GOVUKDesignSystemFormBuilder
|
|
500
501
|
# :name,
|
501
502
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
502
503
|
#
|
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)
|
504
|
+
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, include_hidden: false, form_group: {}, &block)
|
504
505
|
Elements::Radios::Collection.new(
|
505
506
|
self,
|
506
507
|
object_name,
|
@@ -517,6 +518,7 @@ module GOVUKDesignSystemFormBuilder
|
|
517
518
|
bold_labels: bold_labels,
|
518
519
|
classes: classes,
|
519
520
|
form_group: form_group,
|
521
|
+
include_hidden: include_hidden,
|
520
522
|
&block
|
521
523
|
).html
|
522
524
|
end
|
@@ -809,9 +811,9 @@ module GOVUKDesignSystemFormBuilder
|
|
809
811
|
# client-side validation provided by the browser. This is to provide a more consistent and accessible user
|
810
812
|
# experience
|
811
813
|
# @param disabled [Boolean] makes the button disabled when true
|
812
|
-
# @param block [Block]
|
813
|
-
#
|
814
|
-
#
|
814
|
+
# @param block [Block] When content is passed in via a block the submit element and the block content will
|
815
|
+
# be wrapped in a +<div class="govuk-button-group">+ which will space the buttons and links within
|
816
|
+
# evenly.
|
815
817
|
# @raise [ArgumentError] raised if both +warning+ and +secondary+ are true
|
816
818
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
817
819
|
# @note Only the first additional button or link (passed in via a block) will be given the
|
@@ -850,7 +852,7 @@ module GOVUKDesignSystemFormBuilder
|
|
850
852
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
851
853
|
# @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
|
852
854
|
# @param omit_day [Boolean] do not render a day input, only capture month and year
|
853
|
-
# @param wildcards [Boolean] add an 'X' to the
|
855
|
+
# @param wildcards [Boolean] add an 'X' to the day and month patterns so users can add approximate dates
|
854
856
|
# @param form_group [Hash] configures the form group
|
855
857
|
# @option form_group classes [Array,String] sets the form group's classes
|
856
858
|
# @option form_group kwargs [Hash] additional attributes added to the form group
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
2
|
+
module Containers
|
3
|
+
class ButtonGroup < Base
|
4
|
+
def initialize(builder, buttons)
|
5
|
+
super(builder, nil, nil)
|
6
|
+
|
7
|
+
@buttons = buttons
|
8
|
+
end
|
9
|
+
|
10
|
+
def html
|
11
|
+
tag.div(@buttons, class: %(#{brand}-button-group))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,7 +2,7 @@ module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Containers
|
3
3
|
class CharacterCount < Base
|
4
4
|
def initialize(builder, max_words:, max_chars:, threshold:)
|
5
|
-
|
5
|
+
super(builder, nil, nil)
|
6
6
|
|
7
7
|
fail ArgumentError, 'limit can be words or chars' if max_words && max_chars
|
8
8
|
|
@@ -11,10 +11,10 @@ module GOVUKDesignSystemFormBuilder
|
|
11
11
|
@threshold = threshold
|
12
12
|
end
|
13
13
|
|
14
|
-
def html
|
14
|
+
def html(&block)
|
15
15
|
return yield unless limit?
|
16
16
|
|
17
|
-
tag.div(**options)
|
17
|
+
tag.div(**options, &block)
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
@@ -2,13 +2,14 @@ module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Containers
|
3
3
|
class CheckBoxes < Base
|
4
4
|
def initialize(builder, small:, classes: nil)
|
5
|
-
|
5
|
+
super(builder, nil, nil)
|
6
|
+
|
6
7
|
@small = small
|
7
8
|
@classes = classes
|
8
9
|
end
|
9
10
|
|
10
|
-
def html
|
11
|
-
tag.div(**options)
|
11
|
+
def html(&block)
|
12
|
+
tag.div(**options, &block)
|
12
13
|
end
|
13
14
|
|
14
15
|
private
|
@@ -4,14 +4,15 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
include Traits::Hint
|
5
5
|
|
6
6
|
def initialize(builder, inline:, small:, classes:)
|
7
|
-
|
7
|
+
super(builder, nil, nil)
|
8
|
+
|
8
9
|
@inline = inline
|
9
10
|
@small = small
|
10
11
|
@classes = classes
|
11
12
|
end
|
12
13
|
|
13
|
-
def html
|
14
|
-
tag.div(**options)
|
14
|
+
def html(&block)
|
15
|
+
tag.div(**options, &block)
|
15
16
|
end
|
16
17
|
|
17
18
|
private
|
@@ -6,7 +6,7 @@ module GOVUKDesignSystemFormBuilder
|
|
6
6
|
include Traits::Hint
|
7
7
|
include Traits::Supplemental
|
8
8
|
|
9
|
-
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:,
|
9
|
+
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint:, legend:, caption:, small:, classes:, form_group:, hint_method: nil, &block)
|
10
10
|
super(builder, object_name, attribute_name, &block)
|
11
11
|
|
12
12
|
@collection = collection
|
@@ -16,7 +16,7 @@ module GOVUKDesignSystemFormBuilder
|
|
16
16
|
|
17
17
|
def html
|
18
18
|
@checkbox.label(for: field_id(link_errors: @link_errors), class: label_classes) do
|
19
|
-
[localised_text(:label), @checkbox.text, @value].compact.first
|
19
|
+
[localised_text(:label), @checkbox.text, @value].compact.first.to_s
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -9,7 +9,7 @@ module GOVUKDesignSystemFormBuilder
|
|
9
9
|
|
10
10
|
SEGMENTS = { day: '3i', month: '2i', year: '1i' }.freeze
|
11
11
|
|
12
|
-
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:,
|
12
|
+
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, form_group:, wildcards:, date_of_birth: false, &block)
|
13
13
|
super(builder, object_name, attribute_name, &block)
|
14
14
|
|
15
15
|
@legend = legend
|
@@ -4,8 +4,8 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
include Traits::Error
|
5
5
|
|
6
6
|
def initialize(builder, object_name, title, link_base_errors_to:)
|
7
|
-
|
8
|
-
|
7
|
+
super(builder, object_name, nil)
|
8
|
+
|
9
9
|
@title = title
|
10
10
|
@link_base_errors_to = link_base_errors_to
|
11
11
|
end
|
@@ -6,27 +6,28 @@ module GOVUKDesignSystemFormBuilder
|
|
6
6
|
include Traits::Hint
|
7
7
|
include Traits::Supplemental
|
8
8
|
|
9
|
-
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint_method:, hint:, legend:, caption:, inline:, small:, bold_labels:, classes:, form_group:, &block)
|
9
|
+
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint_method:, hint:, legend:, caption:, inline:, small:, bold_labels:, classes:, form_group:, include_hidden:, &block)
|
10
10
|
super(builder, object_name, attribute_name, &block)
|
11
11
|
|
12
|
-
@collection
|
13
|
-
@value_method
|
14
|
-
@text_method
|
15
|
-
@hint_method
|
16
|
-
@inline
|
17
|
-
@small
|
18
|
-
@legend
|
19
|
-
@caption
|
20
|
-
@hint
|
21
|
-
@classes
|
22
|
-
@form_group
|
23
|
-
@
|
12
|
+
@collection = collection
|
13
|
+
@value_method = value_method
|
14
|
+
@text_method = text_method
|
15
|
+
@hint_method = hint_method
|
16
|
+
@inline = inline
|
17
|
+
@small = small
|
18
|
+
@legend = legend
|
19
|
+
@caption = caption
|
20
|
+
@hint = hint
|
21
|
+
@classes = classes
|
22
|
+
@form_group = form_group
|
23
|
+
@include_hidden = include_hidden
|
24
|
+
@bold_labels = hint_method.present? || bold_labels
|
24
25
|
end
|
25
26
|
|
26
27
|
def html
|
27
28
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
|
28
29
|
Containers::Fieldset.new(@builder, @object_name, @attribute_name, **fieldset_options).html do
|
29
|
-
safe_join([supplemental_content, hint_element, error_element, radios])
|
30
|
+
safe_join([hidden_field, supplemental_content, hint_element, error_element, radios])
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -47,6 +48,12 @@ module GOVUKDesignSystemFormBuilder
|
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
51
|
+
def hidden_field
|
52
|
+
return unless @include_hidden
|
53
|
+
|
54
|
+
@builder.hidden_field(@attribute_name, value: "")
|
55
|
+
end
|
56
|
+
|
50
57
|
def collection
|
51
58
|
@collection.map.with_index do |item, i|
|
52
59
|
Elements::Radios::CollectionRadioButton.new(@builder, @object_name, @attribute_name, item, **collection_options(i)).html
|
@@ -6,7 +6,7 @@ module GOVUKDesignSystemFormBuilder
|
|
6
6
|
include Traits::Hint
|
7
7
|
include Traits::Supplemental
|
8
8
|
|
9
|
-
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, options: {}, html_options: {},
|
9
|
+
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint:, label:, caption:, form_group:, options: {}, html_options: {}, &block)
|
10
10
|
super(builder, object_name, attribute_name, &block)
|
11
11
|
|
12
12
|
@collection = collection
|
@@ -49,7 +49,7 @@ module GOVUKDesignSystemFormBuilder
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def custom_classes
|
52
|
-
@html_options
|
52
|
+
@html_options[:class]
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -4,9 +4,10 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
using PrefixableArray
|
5
5
|
|
6
6
|
def initialize(builder, text, warning:, secondary:, classes:, prevent_double_click:, validate:, disabled:, &block)
|
7
|
+
super(builder, nil, nil)
|
8
|
+
|
7
9
|
fail ArgumentError, 'buttons can be warning or secondary' if warning && secondary
|
8
10
|
|
9
|
-
@builder = builder
|
10
11
|
@text = text
|
11
12
|
@prevent_double_click = prevent_double_click
|
12
13
|
@warning = warning
|
@@ -18,11 +19,19 @@ module GOVUKDesignSystemFormBuilder
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def html
|
21
|
-
|
22
|
+
@block_content.present? ? button_group : buttons
|
22
23
|
end
|
23
24
|
|
24
25
|
private
|
25
26
|
|
27
|
+
def buttons
|
28
|
+
safe_join([submit, @block_content])
|
29
|
+
end
|
30
|
+
|
31
|
+
def button_group
|
32
|
+
Containers::ButtonGroup.new(@builder, buttons).html
|
33
|
+
end
|
34
|
+
|
26
35
|
def submit
|
27
36
|
@builder.submit(@text, class: classes, **options)
|
28
37
|
end
|
@@ -30,7 +39,7 @@ module GOVUKDesignSystemFormBuilder
|
|
30
39
|
def classes
|
31
40
|
%w(button)
|
32
41
|
.prefix(brand)
|
33
|
-
.push(warning_class, secondary_class, disabled_class,
|
42
|
+
.push(warning_class, secondary_class, disabled_class, custom_classes)
|
34
43
|
.flatten
|
35
44
|
.compact
|
36
45
|
end
|
@@ -54,10 +63,6 @@ module GOVUKDesignSystemFormBuilder
|
|
54
63
|
%(#{brand}-button--secondary) if @secondary
|
55
64
|
end
|
56
65
|
|
57
|
-
def padding_class
|
58
|
-
%(#{brand}-!-margin-right-1) if @block_content
|
59
|
-
end
|
60
|
-
|
61
66
|
def disabled_class
|
62
67
|
%(#{brand}-button--disabled) if @disabled
|
63
68
|
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.1.
|
4
|
+
version: 2.1.8
|
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:
|
11
|
+
date: 2021-02-10 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.
|
137
|
+
version: '0.20'
|
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.20'
|
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.26.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.26.0
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: rubypants
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- lib/govuk_design_system_formbuilder.rb
|
253
253
|
- lib/govuk_design_system_formbuilder/base.rb
|
254
254
|
- lib/govuk_design_system_formbuilder/builder.rb
|
255
|
+
- lib/govuk_design_system_formbuilder/containers/button_group.rb
|
255
256
|
- lib/govuk_design_system_formbuilder/containers/character_count.rb
|
256
257
|
- lib/govuk_design_system_formbuilder/containers/check_boxes.rb
|
257
258
|
- lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb
|
@@ -305,7 +306,7 @@ metadata:
|
|
305
306
|
documentation_uri: https://www.rubydoc.info/gems/govuk_design_system_formbuilder/GOVUKDesignSystemFormBuilder/Builder
|
306
307
|
homepage_uri: https://govuk-form-builder.netlify.app
|
307
308
|
source_code_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder
|
308
|
-
post_install_message:
|
309
|
+
post_install_message:
|
309
310
|
rdoc_options: []
|
310
311
|
require_paths:
|
311
312
|
- lib
|
@@ -320,8 +321,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
320
321
|
- !ruby/object:Gem::Version
|
321
322
|
version: '0'
|
322
323
|
requirements: []
|
323
|
-
rubygems_version: 3.1.
|
324
|
-
signing_key:
|
324
|
+
rubygems_version: 3.1.4
|
325
|
+
signing_key:
|
325
326
|
specification_version: 4
|
326
327
|
summary: GOV.UK-compliant Rails form builder
|
327
328
|
test_files: []
|