govuk_design_system_formbuilder 2.2.0 → 2.3.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/LICENSE +21 -0
- data/lib/govuk_design_system_formbuilder.rb +1 -0
- data/lib/govuk_design_system_formbuilder/builder.rb +21 -13
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +10 -7
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +4 -2
- data/lib/govuk_design_system_formbuilder/elements/date.rb +10 -9
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +10 -3
- data/lib/govuk_design_system_formbuilder/elements/file.rb +2 -1
- data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/password.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +8 -6
- data/lib/govuk_design_system_formbuilder/elements/select.rb +21 -18
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +13 -10
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +2 -1
- data/lib/govuk_design_system_formbuilder/traits/html_attributes.rb +9 -0
- data/lib/govuk_design_system_formbuilder/traits/input.rb +1 -1
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 641fbc9fbd19bc333cd0872da36c9286c7f956cdfe41ef5b9b234dbe264bc03a
|
4
|
+
data.tar.gz: 30a0000fa3868e7f7f6bf67347a025cf8f85e5e02a77bff4026d343088c3fb3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53d6df89df5401b05190709bbad01273d0a2491484792d82307a1ffd6a054ef9de69f8d7d5ab7ae028c677603628bf203439959e70c8e2776504172c41fc2939
|
7
|
+
data.tar.gz: 5fa7f1475a37d063bab13dc27e4238ca6a7429abbe805b51436a6d3a1310c98df7defe60ad51ff376968d4ae8de8f828611daf79fc75a4602a6dbfeef3ae47f7
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (C) 2019 Crown Copyright (Government Digital Service)
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
9
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
10
|
+
so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -341,6 +341,7 @@ module GOVUKDesignSystemFormBuilder
|
|
341
341
|
# @param form_group [Hash] configures the form group
|
342
342
|
# @option form_group classes [Array,String] sets the form group's classes
|
343
343
|
# @option form_group kwargs [Hash] additional attributes added to the form group
|
344
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +textarea+ element
|
344
345
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input
|
345
346
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
346
347
|
# @see https://design-system.service.gov.uk/components/textarea/ GOV.UK text area component
|
@@ -411,7 +412,7 @@ module GOVUKDesignSystemFormBuilder
|
|
411
412
|
# = f.govuk_collection_select(:team, @teams, :id, :name) do
|
412
413
|
# label: -> { tag.h3("Which team did you represent?") }
|
413
414
|
#
|
414
|
-
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {},
|
415
|
+
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, hint: {}, label: {}, caption: {}, form_group: {}, **kwargs, &block)
|
415
416
|
Elements::Select.new(
|
416
417
|
self,
|
417
418
|
object_name,
|
@@ -423,8 +424,8 @@ module GOVUKDesignSystemFormBuilder
|
|
423
424
|
label: label,
|
424
425
|
caption: caption,
|
425
426
|
options: options,
|
426
|
-
html_options: html_options,
|
427
427
|
form_group: form_group,
|
428
|
+
**kwargs,
|
428
429
|
&block
|
429
430
|
).html
|
430
431
|
end
|
@@ -597,6 +598,7 @@ module GOVUKDesignSystemFormBuilder
|
|
597
598
|
# container and only revealed when the radio button is picked
|
598
599
|
# @param link_errors [Boolean] controls whether this radio button should be linked to from {#govuk_error_summary}
|
599
600
|
# from the error summary. <b>Should only be set to +true+ for the first radio button in a fieldset</b>
|
601
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
600
602
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
601
603
|
#
|
602
604
|
# @example A single radio button for our new favourite colour
|
@@ -604,8 +606,8 @@ module GOVUKDesignSystemFormBuilder
|
|
604
606
|
# = f.govuk_radio_buttons_fieldset :favourite_colour do
|
605
607
|
# = f.govuk_radio_button :favourite_colour, :red, label: { text: 'Red' }
|
606
608
|
#
|
607
|
-
def govuk_radio_button(attribute_name, value, hint: {}, label: {}, link_errors: false, &block)
|
608
|
-
Elements::Radios::FieldsetRadioButton.new(self, object_name, attribute_name, value, hint: hint, label: label, link_errors: link_errors, &block).html
|
609
|
+
def govuk_radio_button(attribute_name, value, hint: {}, label: {}, link_errors: false, **kwargs, &block)
|
610
|
+
Elements::Radios::FieldsetRadioButton.new(self, object_name, attribute_name, value, hint: hint, label: label, link_errors: link_errors, **kwargs, &block).html
|
609
611
|
end
|
610
612
|
|
611
613
|
# Inserts a text divider into a list of radio buttons
|
@@ -775,6 +777,7 @@ module GOVUKDesignSystemFormBuilder
|
|
775
777
|
# @option label hidden [Boolean] control the visability of the label. Hidden labels will stil be read by screenreaders
|
776
778
|
# @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
|
777
779
|
# @param multiple [Boolean] controls whether the check box is part of a collection or represents a single attribute
|
780
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
778
781
|
# @param block [Block] any HTML passed in will form the contents of the fieldset
|
779
782
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
780
783
|
#
|
@@ -786,7 +789,7 @@ module GOVUKDesignSystemFormBuilder
|
|
786
789
|
# label: { text: 'Do you agree with our terms and conditions?' },
|
787
790
|
# hint: { text: 'You will not be able to proceed unless you do' }
|
788
791
|
#
|
789
|
-
def govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, &block)
|
792
|
+
def govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, **kwargs, &block)
|
790
793
|
Elements::CheckBoxes::FieldsetCheckBox.new(
|
791
794
|
self,
|
792
795
|
object_name,
|
@@ -797,6 +800,7 @@ module GOVUKDesignSystemFormBuilder
|
|
797
800
|
label: label,
|
798
801
|
link_errors: link_errors,
|
799
802
|
multiple: multiple,
|
803
|
+
**kwargs,
|
800
804
|
&block
|
801
805
|
).html
|
802
806
|
end
|
@@ -813,6 +817,7 @@ module GOVUKDesignSystemFormBuilder
|
|
813
817
|
# client-side validation provided by the browser. This is to provide a more consistent and accessible user
|
814
818
|
# experience
|
815
819
|
# @param disabled [Boolean] makes the button disabled when true
|
820
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
816
821
|
# @param block [Block] When content is passed in via a block the submit element and the block content will
|
817
822
|
# be wrapped in a +<div class="govuk-button-group">+ which will space the buttons and links within
|
818
823
|
# evenly.
|
@@ -829,8 +834,8 @@ module GOVUKDesignSystemFormBuilder
|
|
829
834
|
# = f.govuk_submit "Proceed", prevent_double_click: true do
|
830
835
|
# = link_to 'Cancel', some_other_path, class: 'govuk-button__secondary'
|
831
836
|
#
|
832
|
-
def govuk_submit(text = config.default_submit_button_text, warning: false, secondary: false, classes: nil, prevent_double_click: true, validate: config.default_submit_validate, disabled: false, &block)
|
833
|
-
Elements::Submit.new(self, text, warning: warning, secondary: secondary, classes: classes, prevent_double_click: prevent_double_click, validate: validate, disabled: disabled, &block).html
|
837
|
+
def govuk_submit(text = config.default_submit_button_text, warning: false, secondary: false, classes: nil, prevent_double_click: true, validate: config.default_submit_validate, disabled: false, **kwargs, &block)
|
838
|
+
Elements::Submit.new(self, text, warning: warning, secondary: secondary, classes: classes, prevent_double_click: prevent_double_click, validate: validate, disabled: disabled, **kwargs, &block).html
|
834
839
|
end
|
835
840
|
|
836
841
|
# Generates three inputs for the +day+, +month+ and +year+ components of a date
|
@@ -858,6 +863,7 @@ module GOVUKDesignSystemFormBuilder
|
|
858
863
|
# @param form_group [Hash] configures the form group
|
859
864
|
# @option form_group classes [Array,String] sets the form group's classes
|
860
865
|
# @option form_group kwargs [Hash] additional attributes added to the form group
|
866
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
861
867
|
# @param block [Block] arbitrary HTML that will be rendered between the hint and the input group
|
862
868
|
# @param date_of_birth [Boolean] if +true+ {https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values birth date auto completion attributes}
|
863
869
|
# will be added to the inputs
|
@@ -877,8 +883,8 @@ module GOVUKDesignSystemFormBuilder
|
|
877
883
|
# @example A date input with legend supplied as a proc
|
878
884
|
# = f.govuk_date_field :finishes_on,
|
879
885
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
880
|
-
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, form_group: {}, wildcards: false, &block)
|
881
|
-
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, wildcards: wildcards, &block).html
|
886
|
+
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, form_group: {}, wildcards: false, **kwargs, &block)
|
887
|
+
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, wildcards: wildcards, **kwargs, &block).html
|
882
888
|
end
|
883
889
|
|
884
890
|
# Generates a summary of errors in the form, each linking to the corresponding
|
@@ -887,6 +893,7 @@ module GOVUKDesignSystemFormBuilder
|
|
887
893
|
# @param title [String] the error summary heading
|
888
894
|
# @param link_base_errors_to [Symbol,String] set the field that errors on +:base+ are linked
|
889
895
|
# to, as there won't be a field representing the object base.
|
896
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the error summary +div+ element
|
890
897
|
#
|
891
898
|
# @note Only the first error in the +#errors+ array for each attribute will
|
892
899
|
# be included.
|
@@ -895,8 +902,8 @@ module GOVUKDesignSystemFormBuilder
|
|
895
902
|
# = f.govuk_error_summary 'Uh-oh, spaghettios'
|
896
903
|
#
|
897
904
|
# @see https://design-system.service.gov.uk/components/error-summary/ GOV.UK error summary
|
898
|
-
def govuk_error_summary(title = config.default_error_summary_title, link_base_errors_to: nil)
|
899
|
-
Elements::ErrorSummary.new(self, object_name, title, link_base_errors_to: link_base_errors_to).html
|
905
|
+
def govuk_error_summary(title = config.default_error_summary_title, link_base_errors_to: nil, **kwargs)
|
906
|
+
Elements::ErrorSummary.new(self, object_name, title, link_base_errors_to: link_base_errors_to, **kwargs).html
|
900
907
|
end
|
901
908
|
|
902
909
|
# Generates a fieldset containing the contents of the block
|
@@ -912,6 +919,7 @@ module GOVUKDesignSystemFormBuilder
|
|
912
919
|
# @option caption text [String] the caption text
|
913
920
|
# @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
|
914
921
|
# @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
|
922
|
+
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
915
923
|
#
|
916
924
|
# @example A fieldset containing address fields
|
917
925
|
# = f.govuk_fieldset legend: { text: 'Address' } do
|
@@ -927,8 +935,8 @@ module GOVUKDesignSystemFormBuilder
|
|
927
935
|
# @see https://design-system.service.gov.uk/components/fieldset/ GOV.UK fieldset
|
928
936
|
# @see https://design-system.service.gov.uk/styles/typography/#headings-with-captions Headings with captions
|
929
937
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
930
|
-
def govuk_fieldset(legend: { text: 'Fieldset heading' }, caption: {}, described_by: nil, &block)
|
931
|
-
Containers::Fieldset.new(self, legend: legend, caption: caption, described_by: described_by, &block).html
|
938
|
+
def govuk_fieldset(legend: { text: 'Fieldset heading' }, caption: {}, described_by: nil, **kwargs, &block)
|
939
|
+
Containers::Fieldset.new(self, legend: legend, caption: caption, described_by: described_by, **kwargs, &block).html
|
932
940
|
end
|
933
941
|
|
934
942
|
# Generates an input of type +file+
|
@@ -1,17 +1,20 @@
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
2
2
|
module Containers
|
3
3
|
class Fieldset < Base
|
4
|
-
|
4
|
+
include Traits::HTMLAttributes
|
5
|
+
|
6
|
+
def initialize(builder, object_name = nil, attribute_name = nil, legend: {}, caption: {}, described_by: nil, **kwargs, &block)
|
5
7
|
super(builder, object_name, attribute_name, &block)
|
6
8
|
|
7
|
-
@legend
|
8
|
-
@caption
|
9
|
-
@described_by
|
10
|
-
@attribute_name
|
9
|
+
@legend = legend
|
10
|
+
@caption = caption
|
11
|
+
@described_by = described_by(described_by)
|
12
|
+
@attribute_name = attribute_name
|
13
|
+
@html_attributes = kwargs
|
11
14
|
end
|
12
15
|
|
13
16
|
def html
|
14
|
-
tag.fieldset(**
|
17
|
+
tag.fieldset(**attributes(@html_attributes)) do
|
15
18
|
safe_join([legend_element, (@block_content || yield)])
|
16
19
|
end
|
17
20
|
end
|
@@ -26,7 +29,7 @@ module GOVUKDesignSystemFormBuilder
|
|
26
29
|
end
|
27
30
|
|
28
31
|
def classes
|
29
|
-
%(#{brand}-fieldset)
|
32
|
+
[%(#{brand}-fieldset)]
|
30
33
|
end
|
31
34
|
|
32
35
|
def legend_element
|
@@ -8,8 +8,9 @@ module GOVUKDesignSystemFormBuilder
|
|
8
8
|
include Traits::Hint
|
9
9
|
include Traits::FieldsetItem
|
10
10
|
include Traits::Conditional
|
11
|
+
include Traits::HTMLAttributes
|
11
12
|
|
12
|
-
def initialize(builder, object_name, attribute_name, value, unchecked_value, label:, hint:, link_errors:, multiple:, &block)
|
13
|
+
def initialize(builder, object_name, attribute_name, value, unchecked_value, label:, hint:, link_errors:, multiple:, **kwargs, &block)
|
13
14
|
super(builder, object_name, attribute_name)
|
14
15
|
|
15
16
|
@value = value
|
@@ -18,6 +19,7 @@ module GOVUKDesignSystemFormBuilder
|
|
18
19
|
@hint = hint
|
19
20
|
@multiple = multiple
|
20
21
|
@link_errors = link_errors
|
22
|
+
@html_attributes = kwargs
|
21
23
|
|
22
24
|
if block_given?
|
23
25
|
@conditional_content = wrap_conditional(block)
|
@@ -38,7 +40,7 @@ module GOVUKDesignSystemFormBuilder
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def check_box
|
41
|
-
@builder.check_box(@attribute_name,
|
43
|
+
@builder.check_box(@attribute_name, attributes(@html_attributes), @value, @unchecked_value)
|
42
44
|
end
|
43
45
|
|
44
46
|
def options
|
@@ -9,20 +9,21 @@ 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:, omit_day:, form_group:, wildcards:, date_of_birth: false, &block)
|
12
|
+
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, form_group:, wildcards:, date_of_birth: false, **kwargs, &block)
|
13
13
|
super(builder, object_name, attribute_name, &block)
|
14
14
|
|
15
|
-
@legend
|
16
|
-
@caption
|
17
|
-
@hint
|
18
|
-
@date_of_birth
|
19
|
-
@omit_day
|
20
|
-
@form_group
|
21
|
-
@wildcards
|
15
|
+
@legend = legend
|
16
|
+
@caption = caption
|
17
|
+
@hint = hint
|
18
|
+
@date_of_birth = date_of_birth
|
19
|
+
@omit_day = omit_day
|
20
|
+
@form_group = form_group
|
21
|
+
@wildcards = wildcards
|
22
|
+
@html_attributes = kwargs
|
22
23
|
end
|
23
24
|
|
24
25
|
def html
|
25
|
-
Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group).html do
|
26
|
+
Containers::FormGroup.new(@builder, @object_name, @attribute_name, **@form_group, **@html_attributes).html do
|
26
27
|
Containers::Fieldset.new(@builder, @object_name, @attribute_name, **fieldset_options).html do
|
27
28
|
safe_join([supplemental_content, hint_element, error_element, date])
|
28
29
|
end
|
@@ -2,18 +2,20 @@ module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Elements
|
3
3
|
class ErrorSummary < Base
|
4
4
|
include Traits::Error
|
5
|
+
include Traits::HTMLAttributes
|
5
6
|
|
6
|
-
def initialize(builder, object_name, title, link_base_errors_to
|
7
|
+
def initialize(builder, object_name, title, link_base_errors_to:, **kwargs)
|
7
8
|
super(builder, object_name, nil)
|
8
9
|
|
9
10
|
@title = title
|
10
11
|
@link_base_errors_to = link_base_errors_to
|
12
|
+
@html_attributes = kwargs
|
11
13
|
end
|
12
14
|
|
13
15
|
def html
|
14
16
|
return nil unless object_has_errors?
|
15
17
|
|
16
|
-
tag.div(
|
18
|
+
tag.div(**attributes(@html_attributes)) do
|
17
19
|
safe_join([title, summary])
|
18
20
|
end
|
19
21
|
end
|
@@ -46,6 +48,10 @@ module GOVUKDesignSystemFormBuilder
|
|
46
48
|
'#'.concat(target)
|
47
49
|
end
|
48
50
|
|
51
|
+
def classes
|
52
|
+
Array.wrap(summary_class)
|
53
|
+
end
|
54
|
+
|
49
55
|
def summary_class(part = nil)
|
50
56
|
if part
|
51
57
|
%(#{brand}-error-summary).concat('__', part)
|
@@ -70,8 +76,9 @@ module GOVUKDesignSystemFormBuilder
|
|
70
76
|
@builder.object.errors.any?
|
71
77
|
end
|
72
78
|
|
73
|
-
def
|
79
|
+
def options
|
74
80
|
{
|
81
|
+
class: classes,
|
75
82
|
tabindex: -1,
|
76
83
|
role: 'alert',
|
77
84
|
data: {
|
@@ -7,6 +7,7 @@ module GOVUKDesignSystemFormBuilder
|
|
7
7
|
include Traits::Hint
|
8
8
|
include Traits::Label
|
9
9
|
include Traits::Supplemental
|
10
|
+
include Traits::HTMLAttributes
|
10
11
|
|
11
12
|
def initialize(builder, object_name, attribute_name, hint:, label:, caption:, form_group:, **kwargs, &block)
|
12
13
|
super(builder, object_name, attribute_name, &block)
|
@@ -27,7 +28,7 @@ module GOVUKDesignSystemFormBuilder
|
|
27
28
|
private
|
28
29
|
|
29
30
|
def file
|
30
|
-
@builder.file_field(@attribute_name,
|
31
|
+
@builder.file_field(@attribute_name, attributes(@html_attributes))
|
31
32
|
end
|
32
33
|
|
33
34
|
def options
|
@@ -8,14 +8,16 @@ module GOVUKDesignSystemFormBuilder
|
|
8
8
|
include Traits::Hint
|
9
9
|
include Traits::FieldsetItem
|
10
10
|
include Traits::Conditional
|
11
|
+
include Traits::HTMLAttributes
|
11
12
|
|
12
|
-
def initialize(builder, object_name, attribute_name, value, label:, hint:, link_errors:, &block)
|
13
|
+
def initialize(builder, object_name, attribute_name, value, label:, hint:, link_errors:, **kwargs, &block)
|
13
14
|
super(builder, object_name, attribute_name)
|
14
15
|
|
15
|
-
@value
|
16
|
-
@label
|
17
|
-
@hint
|
18
|
-
@link_errors
|
16
|
+
@value = value
|
17
|
+
@label = label
|
18
|
+
@hint = hint
|
19
|
+
@link_errors = has_errors? && link_errors
|
20
|
+
@html_attributes = kwargs
|
19
21
|
|
20
22
|
if block_given?
|
21
23
|
@conditional_content = wrap_conditional(block)
|
@@ -40,7 +42,7 @@ module GOVUKDesignSystemFormBuilder
|
|
40
42
|
end
|
41
43
|
|
42
44
|
def input
|
43
|
-
@builder.radio_button(@attribute_name, @value, **
|
45
|
+
@builder.radio_button(@attribute_name, @value, **attributes(@html_attributes))
|
44
46
|
end
|
45
47
|
|
46
48
|
def options
|
@@ -5,19 +5,26 @@ module GOVUKDesignSystemFormBuilder
|
|
5
5
|
include Traits::Label
|
6
6
|
include Traits::Hint
|
7
7
|
include Traits::Supplemental
|
8
|
+
include Traits::HTMLAttributes
|
8
9
|
|
9
|
-
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint:, label:, caption:, form_group:, options: {},
|
10
|
+
def initialize(builder, object_name, attribute_name, collection, value_method:, text_method:, hint:, label:, caption:, form_group:, options: {}, **kwargs, &block)
|
10
11
|
super(builder, object_name, attribute_name, &block)
|
11
12
|
|
12
|
-
@collection
|
13
|
-
@value_method
|
14
|
-
@text_method
|
15
|
-
@options
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@
|
13
|
+
@collection = collection
|
14
|
+
@value_method = value_method
|
15
|
+
@text_method = text_method
|
16
|
+
@options = options
|
17
|
+
@label = label
|
18
|
+
@caption = caption
|
19
|
+
@hint = hint
|
20
|
+
@form_group = form_group
|
21
|
+
@html_attributes = kwargs
|
22
|
+
|
23
|
+
# FIXME remove this soon, worth informing people who miss the release notes that the
|
24
|
+
# args have changed though.
|
25
|
+
if :html_options.in?(kwargs.keys)
|
26
|
+
Rails.logger.warn("GOVUKDesignSystemFormBuilder: html_options has been deprecated, use keyword arguments instead")
|
27
|
+
end
|
21
28
|
end
|
22
29
|
|
23
30
|
def html
|
@@ -29,28 +36,24 @@ module GOVUKDesignSystemFormBuilder
|
|
29
36
|
private
|
30
37
|
|
31
38
|
def select
|
32
|
-
@builder.collection_select(@attribute_name, @collection, @value_method, @text_method, @options, **
|
39
|
+
@builder.collection_select(@attribute_name, @collection, @value_method, @text_method, @options, **attributes(@html_attributes))
|
33
40
|
end
|
34
41
|
|
35
42
|
def options
|
36
|
-
|
43
|
+
{
|
37
44
|
id: field_id(link_errors: true),
|
38
45
|
class: classes,
|
39
46
|
aria: { describedby: described_by(hint_id, error_id, supplemental_id) }
|
40
|
-
|
47
|
+
}
|
41
48
|
end
|
42
49
|
|
43
50
|
def classes
|
44
|
-
[%(#{brand}-select), error_class
|
51
|
+
[%(#{brand}-select), error_class].flatten.compact
|
45
52
|
end
|
46
53
|
|
47
54
|
def error_class
|
48
55
|
%(#{brand}-select--error) if has_errors?
|
49
56
|
end
|
50
|
-
|
51
|
-
def custom_classes
|
52
|
-
@html_options[:class]
|
53
|
-
end
|
54
57
|
end
|
55
58
|
end
|
56
59
|
end
|
@@ -2,8 +2,9 @@ module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Elements
|
3
3
|
class Submit < Base
|
4
4
|
using PrefixableArray
|
5
|
+
include Traits::HTMLAttributes
|
5
6
|
|
6
|
-
def initialize(builder, text, warning:, secondary:, classes:, prevent_double_click:, validate:, disabled:, &block)
|
7
|
+
def initialize(builder, text, warning:, secondary:, classes:, prevent_double_click:, validate:, disabled:, **kwargs, &block)
|
7
8
|
super(builder, nil, nil)
|
8
9
|
|
9
10
|
fail ArgumentError, 'buttons can be warning or secondary' if warning && secondary
|
@@ -15,6 +16,7 @@ module GOVUKDesignSystemFormBuilder
|
|
15
16
|
@classes = classes
|
16
17
|
@validate = validate
|
17
18
|
@disabled = disabled
|
19
|
+
@html_attributes = kwargs
|
18
20
|
@block_content = capture { block.call } if block_given?
|
19
21
|
end
|
20
22
|
|
@@ -33,21 +35,14 @@ module GOVUKDesignSystemFormBuilder
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def submit
|
36
|
-
@builder.submit(@text,
|
37
|
-
end
|
38
|
-
|
39
|
-
def classes
|
40
|
-
%w(button)
|
41
|
-
.prefix(brand)
|
42
|
-
.push(warning_class, secondary_class, disabled_class, custom_classes)
|
43
|
-
.flatten
|
44
|
-
.compact
|
38
|
+
@builder.submit(@text, **attributes(@html_attributes))
|
45
39
|
end
|
46
40
|
|
47
41
|
def options
|
48
42
|
{
|
49
43
|
formnovalidate: !@validate,
|
50
44
|
disabled: @disabled,
|
45
|
+
class: classes,
|
51
46
|
data: {
|
52
47
|
module: %(#{brand}-button),
|
53
48
|
'prevent-double-click': @prevent_double_click
|
@@ -55,6 +50,14 @@ module GOVUKDesignSystemFormBuilder
|
|
55
50
|
}
|
56
51
|
end
|
57
52
|
|
53
|
+
def classes
|
54
|
+
%w(button)
|
55
|
+
.prefix(brand)
|
56
|
+
.push(warning_class, secondary_class, disabled_class, custom_classes)
|
57
|
+
.flatten
|
58
|
+
.compact
|
59
|
+
end
|
60
|
+
|
58
61
|
def warning_class
|
59
62
|
%(#{brand}-button--warning) if @warning
|
60
63
|
end
|
@@ -7,6 +7,7 @@ module GOVUKDesignSystemFormBuilder
|
|
7
7
|
include Traits::Hint
|
8
8
|
include Traits::Label
|
9
9
|
include Traits::Supplemental
|
10
|
+
include Traits::HTMLAttributes
|
10
11
|
|
11
12
|
def initialize(builder, object_name, attribute_name, hint:, label:, caption:, rows:, max_words:, max_chars:, threshold:, form_group:, **kwargs, &block)
|
12
13
|
super(builder, object_name, attribute_name, &block)
|
@@ -37,7 +38,7 @@ module GOVUKDesignSystemFormBuilder
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def text_area
|
40
|
-
@builder.text_area(@attribute_name, **
|
41
|
+
@builder.text_area(@attribute_name, **attributes(@html_attributes))
|
41
42
|
end
|
42
43
|
|
43
44
|
def classes
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_design_system_formbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0b1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: deep_merge
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.2.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.2.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: actionview
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -262,6 +276,7 @@ executables: []
|
|
262
276
|
extensions: []
|
263
277
|
extra_rdoc_files: []
|
264
278
|
files:
|
279
|
+
- LICENSE
|
265
280
|
- README.md
|
266
281
|
- lib/govuk_design_system_formbuilder.rb
|
267
282
|
- lib/govuk_design_system_formbuilder/base.rb
|
@@ -306,6 +321,7 @@ files:
|
|
306
321
|
- lib/govuk_design_system_formbuilder/traits/error.rb
|
307
322
|
- lib/govuk_design_system_formbuilder/traits/fieldset_item.rb
|
308
323
|
- lib/govuk_design_system_formbuilder/traits/hint.rb
|
324
|
+
- lib/govuk_design_system_formbuilder/traits/html_attributes.rb
|
309
325
|
- lib/govuk_design_system_formbuilder/traits/input.rb
|
310
326
|
- lib/govuk_design_system_formbuilder/traits/label.rb
|
311
327
|
- lib/govuk_design_system_formbuilder/traits/localisation.rb
|
@@ -331,9 +347,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
331
347
|
version: '0'
|
332
348
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
349
|
requirements:
|
334
|
-
- - "
|
350
|
+
- - ">"
|
335
351
|
- !ruby/object:Gem::Version
|
336
|
-
version:
|
352
|
+
version: 1.3.1
|
337
353
|
requirements: []
|
338
354
|
rubygems_version: 3.1.4
|
339
355
|
signing_key:
|