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, segments: config.default_date_segments, 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_label(attribute_name, text: nil, size: nil, hidden: false, tag: nil, caption: nil, **kwargs) ⇒ Object
Generates a form label without a form group or input.
-
#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
853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 853 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
878 879 880 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 878 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
807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 807 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
749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 749 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
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 570 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
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 446 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, segments: config.default_date_segments, 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
963 964 965 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 963 def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, segments: config.default_date_segments, form_group: {}, **kwargs, &block) Elements::Date.new(self, object_name, attribute_name, hint:, legend:, caption:, date_of_birth:, omit_day:, maxlength_enabled:, segments:, 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
175 176 177 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 175 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
993 994 995 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 993 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
1026 1027 1028 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 1026 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
1067 1068 1069 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 1067 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_label(attribute_name, text: nil, size: nil, hidden: false, tag: nil, caption: nil, **kwargs) ⇒ Object
Generates a form label without a form group or input
15 16 17 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 15 def govuk_label(attribute_name, text: nil, size: nil, hidden: false, tag: nil, caption: nil, **kwargs) GOVUKDesignSystemFormBuilder::Elements::Label.new(self, object_name, attribute_name, text:, size:, hidden:, tag:, caption:, **kwargs).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
282 283 284 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 282 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
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 316 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
123 124 125 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 123 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
672 673 674 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 672 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
640 641 642 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 640 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
684 685 686 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 684 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
495 496 497 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 495 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
912 913 914 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 912 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
402 403 404 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 402 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
69 70 71 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 69 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
227 228 229 |
# File 'lib/govuk_design_system_formbuilder/builder.rb', line 227 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 |