Module: GOVUKDesignSystemFormBuilder::Builder
- Included in:
- FormBuilder
- Defined in:
- lib/govuk_design_system_formbuilder/builder.rb
Instance Method Summary collapse
-
#govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, exclusive: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a single check box, intended for use within a #govuk_check_boxes_fieldset.
-
#govuk_check_box_divider(text = config.default_check_box_divider_text) ⇒ ActiveSupport::SafeBuffer
Inserts a text divider into a list of check boxes.
-
#govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, form_group: {}, multiple: true, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generate a fieldset intended to conatain one or more #govuk_check_box.
-
#govuk_collection_check_boxes(attribute_name, collection, value_method, text_method, hint_method = nil, hint: {}, legend: {}, caption: {}, small: false, form_group: {}, include_hidden: config.default_collection_check_boxes_include_hidden, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generate a list of check boxes from a collection.
-
#govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method = nil, hint_method = nil, hint: {}, legend: {}, caption: {}, inline: false, small: false, bold_labels: nil, include_hidden: config.default_collection_radio_buttons_include_hidden, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a radio button for each item in the supplied collection.
-
#govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, hint: {}, label: {}, caption: {}, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a
select
element containingoption
for each member in the provided collection. -
#govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates three inputs for the
day
,month
andyear
components of a date. -
#govuk_email_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type
email
. -
#govuk_error_summary(title = config.default_error_summary_title, presenter: config.default_error_summary_presenter, link_base_errors_to: nil, order: nil, **kwargs, &block) ⇒ Object
Generates a summary of errors in the form, each linking to the corresponding part of the form that contains the error.
-
#govuk_fieldset(legend: { text: 'Fieldset heading' }, caption: {}, described_by: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a fieldset containing the contents of the block.
-
#govuk_file_field(attribute_name, label: {}, caption: {}, hint: {}, form_group: {}, **kwargs, &block) ⇒ Object
Generates an input of type
file
. -
#govuk_number_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type
number
. -
#govuk_password_field(attribute_name, hint: {}, label: {}, caption: {}, form_group: {}, show_password_text: config.default_show_password_text, hide_password_text: config.default_hide_password_text, show_password_aria_label_text: config.default_show_password_aria_label_text, hide_password_aria_label_text: config.default_hide_password_aria_label_text, password_shown_announcement_text: config.default_password_shown_announcement_text, password_hidden_announcement_text: config.default_password_hidden_announcement_text, **kwargs, &block) ⇒ Object
Generates a password input.
-
#govuk_phone_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type
tel
. -
#govuk_radio_button(attribute_name, value, hint: {}, label: {}, link_errors: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a radio button.
-
#govuk_radio_buttons_fieldset(attribute_name, hint: {}, legend: {}, caption: {}, inline: false, small: false, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a radio button fieldset container and injects the supplied block contents.
-
#govuk_radio_divider(text = config.default_radio_divider_text) ⇒ ActiveSupport::SafeBuffer
Inserts a text divider into a list of radio buttons.
-
#govuk_select(attribute_name, choices = nil, options: {}, label: {}, hint: {}, form_group: {}, caption: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a
select
element containing anoption
for every choice provided. -
#govuk_submit(text = config.default_submit_button_text, warning: false, secondary: false, inverse: false, prevent_double_click: true, validate: config.default_submit_validate, disabled: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a submit button, green by default.
-
#govuk_text_area(attribute_name, hint: {}, label: {}, caption: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a
textarea
element with a label, optional hint. -
#govuk_text_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type
text
. -
#govuk_url_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type
url
.
Instance Method Details
#govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, exclusive: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a single check box, intended for use within a #govuk_check_boxes_fieldset
839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 839 def govuk_check_box(attribute_name, value, unchecked_value = false, hint: {}, label: {}, link_errors: false, multiple: true, exclusive: false, **kwargs, &block) Elements::CheckBoxes::FieldsetCheckBox.new( self, object_name, attribute_name, value, unchecked_value, hint:, label:, link_errors:, multiple:, exclusive:, **kwargs, &block ).html end |
#govuk_check_box_divider(text = config.default_check_box_divider_text) ⇒ ActiveSupport::SafeBuffer
This should only be used from within a #govuk_check_boxes_fieldset
Inserts a text divider into a list of check boxes
864 865 866 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 864 def govuk_check_box_divider(text = config.default_check_box_divider_text) tag.div(text, class: %w(govuk-checkboxes__divider)) end |
#govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, form_group: {}, multiple: true, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
To ensure the #govuk_error_summary link functions correctly ensure the first #govuk_check_box is set to link_errors: true
Generate a fieldset intended to conatain one or more #govuk_check_box
793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 793 def govuk_check_boxes_fieldset(attribute_name, legend: {}, caption: {}, hint: {}, small: false, form_group: {}, multiple: true, **kwargs, &block) Containers::CheckBoxesFieldset.new( self, object_name, attribute_name, hint:, legend:, caption:, small:, form_group:, multiple:, **kwargs, &block ).html end |
#govuk_collection_check_boxes(attribute_name, collection, value_method, text_method, hint_method = nil, hint: {}, legend: {}, caption: {}, small: false, form_group: {}, include_hidden: config.default_collection_check_boxes_include_hidden, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generate a list of check boxes from a collection
735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 735 def govuk_collection_check_boxes(attribute_name, collection, value_method, text_method, hint_method = nil, hint: {}, legend: {}, caption: {}, small: false, form_group: {}, include_hidden: config.default_collection_check_boxes_include_hidden, **kwargs, &block) Elements::CheckBoxes::Collection.new( self, object_name, attribute_name, collection, value_method:, text_method:, hint_method:, hint:, legend:, caption:, small:, form_group:, include_hidden:, **kwargs, &block ).html end |
#govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method = nil, hint_method = nil, hint: {}, legend: {}, caption: {}, inline: false, small: false, bold_labels: nil, include_hidden: config.default_collection_radio_buttons_include_hidden, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Unlike the Rails #collection_radio_buttons
helper, this version can also insert hints per item in the collection by supplying a :hint_method
:bold_labels
, is nil
(falsy) by default. When a :hint_method
is provided it will become true
to make the label stand out more from the hint. The choice can be overridden with true
or false
.
Generates a radio button for each item in the supplied collection
556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 556 def (attribute_name, collection, value_method, text_method = nil, hint_method = nil, hint: {}, legend: {}, caption: {}, inline: false, small: false, bold_labels: nil, include_hidden: config., form_group: {}, **kwargs, &block) Elements::Radios::Collection.new( self, object_name, attribute_name, collection, value_method:, text_method:, hint_method:, hint:, legend:, caption:, inline:, small:, bold_labels:, form_group:, include_hidden:, **kwargs, &block ).html end |
#govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, hint: {}, label: {}, caption: {}, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a select
element containing option
for each member in the provided collection
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 432 def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, hint: {}, label: {}, caption: {}, form_group: {}, **kwargs, &block) Elements::CollectionSelect.new( self, object_name, attribute_name, collection, value_method:, text_method:, hint:, label:, caption:, options:, form_group:, **kwargs, &block ).html end |
#govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
When using this input be aware that Rails’s multiparam time and date handling falls foul of this bug, so incorrect dates like 2019-09-31
will be ‘rounded’ up to 2019-10-01
.
When using this input values will be retrieved from the attribute if it is a Date object or a multiparam date hash
Generates three inputs for the day
, month
and year
components of a date
947 948 949 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 947 def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, form_group: {}, **kwargs, &block) Elements::Date.new(self, object_name, attribute_name, hint:, legend:, caption:, date_of_birth:, omit_day:, maxlength_enabled:, form_group:, **kwargs, &block).html end |
#govuk_email_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type email
161 162 163 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 161 def govuk_email_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) Elements::Inputs::Email.new(self, object_name, attribute_name, hint:, label:, caption:, width:, extra_letter_spacing:, form_group:, prefix_text:, suffix_text:, **kwargs, &block).html end |
#govuk_error_summary(title = config.default_error_summary_title, presenter: config.default_error_summary_presenter, link_base_errors_to: nil, order: nil, **kwargs, &block) ⇒ Object
Only the first error in the #errors
array for each attribute will be included.
Generates a summary of errors in the form, each linking to the corresponding part of the form that contains the error
977 978 979 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 977 def govuk_error_summary(title = config.default_error_summary_title, presenter: config.default_error_summary_presenter, link_base_errors_to: nil, order: nil, **kwargs, &block) Elements::ErrorSummary.new(self, object_name, title, link_base_errors_to:, order:, presenter:, **kwargs, &block).html end |
#govuk_fieldset(legend: { text: 'Fieldset heading' }, caption: {}, described_by: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a fieldset containing the contents of the block
1010 1011 1012 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 1010 def govuk_fieldset(legend: { text: 'Fieldset heading' }, caption: {}, described_by: nil, **kwargs, &block) Containers::Fieldset.new(self, legend:, caption:, described_by:, **kwargs, &block).html end |
#govuk_file_field(attribute_name, label: {}, caption: {}, hint: {}, form_group: {}, **kwargs, &block) ⇒ Object
Remember to set multipart: true when creating a form with file uploads, see the Rails documentation for more information
Generates an input of type file
1051 1052 1053 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 1051 def govuk_file_field(attribute_name, label: {}, caption: {}, hint: {}, form_group: {}, **kwargs, &block) Elements::File.new(self, object_name, attribute_name, label:, caption:, hint:, form_group:, **kwargs, &block).html end |
#govuk_number_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type number
268 269 270 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 268 def govuk_number_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) Elements::Inputs::Number.new(self, object_name, attribute_name, hint:, label:, caption:, width:, extra_letter_spacing:, form_group:, prefix_text:, suffix_text:, **kwargs, &block).html end |
#govuk_password_field(attribute_name, hint: {}, label: {}, caption: {}, form_group: {}, show_password_text: config.default_show_password_text, hide_password_text: config.default_hide_password_text, show_password_aria_label_text: config.default_show_password_aria_label_text, hide_password_aria_label_text: config.default_hide_password_aria_label_text, password_shown_announcement_text: config.default_password_shown_announcement_text, password_hidden_announcement_text: config.default_password_hidden_announcement_text, **kwargs, &block) ⇒ Object
Generates a password input
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 302 def govuk_password_field( attribute_name, hint: {}, label: {}, caption: {}, form_group: {}, show_password_text: config.default_show_password_text, hide_password_text: config.default_hide_password_text, show_password_aria_label_text: config.default_show_password_aria_label_text, hide_password_aria_label_text: config.default_hide_password_aria_label_text, password_shown_announcement_text: config.default_password_shown_announcement_text, password_hidden_announcement_text: config.default_password_hidden_announcement_text, **kwargs, &block ) Elements::Password.new( self, object_name, attribute_name, hint:, label:, caption:, form_group:, show_password_text:, hide_password_text:, show_password_aria_label_text:, hide_password_aria_label_text:, password_shown_announcement_text:, password_hidden_announcement_text:, **kwargs, &block ).html end |
#govuk_phone_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type tel
109 110 111 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 109 def govuk_phone_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) Elements::Inputs::Phone.new(self, object_name, attribute_name, hint:, label:, caption:, width:, extra_letter_spacing:, form_group:, prefix_text:, suffix_text:, **kwargs, &block).html end |
#govuk_radio_button(attribute_name, value, hint: {}, label: {}, link_errors: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
This should only be used from within a #govuk_radio_buttons_fieldset
Generates a radio button
658 659 660 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 658 def (attribute_name, value, hint: {}, label: {}, link_errors: false, **kwargs, &block) Elements::Radios::FieldsetRadioButton.new(self, object_name, attribute_name, value, hint:, label:, link_errors:, **kwargs, &block).html end |
#govuk_radio_buttons_fieldset(attribute_name, hint: {}, legend: {}, caption: {}, inline: false, small: false, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
The intention is to use #govuk_radio_button and #govuk_radio_divider within the passed-in block
To ensure the #govuk_error_summary link functions correctly ensure the first #govuk_radio_button is set to link_errors: true
Generates a radio button fieldset container and injects the supplied block contents
626 627 628 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 626 def (attribute_name, hint: {}, legend: {}, caption: {}, inline: false, small: false, form_group: {}, **kwargs, &block) Containers::RadioButtonsFieldset.new(self, object_name, attribute_name, hint:, legend:, caption:, inline:, small:, form_group:, **kwargs, &block).html end |
#govuk_radio_divider(text = config.default_radio_divider_text) ⇒ ActiveSupport::SafeBuffer
This should only be used from within a #govuk_radio_buttons_fieldset
Inserts a text divider into a list of radio buttons
670 671 672 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 670 def govuk_radio_divider(text = config.default_radio_divider_text) tag.div(text, class: %(#{config.brand}-radios__divider)) end |
#govuk_select(attribute_name, choices = nil, options: {}, label: {}, hint: {}, form_group: {}, caption: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a select
element containing an option
for every choice provided
481 482 483 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 481 def govuk_select(attribute_name, choices = nil, options: {}, label: {}, hint: {}, form_group: {}, caption: {}, **kwargs, &block) Elements::Select.new(self, object_name, attribute_name, choices, options:, label:, hint:, form_group:, caption:, **kwargs, &block).html end |
#govuk_submit(text = config.default_submit_button_text, warning: false, secondary: false, inverse: false, prevent_double_click: true, validate: config.default_submit_validate, disabled: false, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Only the first additional button or link (passed in via a block) will be given the correct left margin, subsequent buttons will need to be manually accounted for
This helper always renders an <button type=‘submit’> tag. Previous versions of this gem rendered a +‘<input type=’submit’>‘ tag instead, but there is a longstanding bug with this approach where the top few pixels don’t initiate a submission when clicked.
Generates a submit button, green by default
898 899 900 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 898 def govuk_submit(text = config., warning: false, secondary: false, inverse: false, prevent_double_click: true, validate: config.default_submit_validate, disabled: false, **kwargs, &block) Elements::Submit.new(self, text, warning:, secondary:, inverse:, prevent_double_click:, validate:, disabled:, **kwargs, &block).html end |
#govuk_text_area(attribute_name, hint: {}, label: {}, caption: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, form_group: {}, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Setting max_chars
or max_words
will add a caption beneath the textarea
with a live count of words or characters
Generates a textarea
element with a label, optional hint. Also offers the ability to add the GOV.UK character and word counting components automatically
388 389 390 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 388 def govuk_text_area(attribute_name, hint: {}, label: {}, caption: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, form_group: {}, **kwargs, &block) Elements::TextArea.new(self, object_name, attribute_name, hint:, label:, caption:, max_words:, max_chars:, rows:, threshold:, form_group:, **kwargs, &block).html end |
#govuk_text_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type text
55 56 57 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 55 def govuk_text_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) Elements::Inputs::Text.new(self, object_name, attribute_name, hint:, label:, caption:, width:, extra_letter_spacing:, form_group:, prefix_text:, suffix_text:, **kwargs, &block).html end |
#govuk_url_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) ⇒ ActiveSupport::SafeBuffer
Generates a input of type url
213 214 215 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 213 def govuk_url_field(attribute_name, hint: {}, label: {}, caption: {}, width: nil, extra_letter_spacing: false, form_group: {}, prefix_text: nil, suffix_text: nil, **kwargs, &block) Elements::Inputs::URL.new(self, object_name, attribute_name, hint:, label:, caption:, width:, extra_letter_spacing:, form_group:, prefix_text:, suffix_text:, **kwargs, &block).html end |